JavaScript:对象重命名键

2022-08-29 23:19:52

有没有一种聪明的(即优化的)方法来重命名javascript对象中的键?

非优化的方法是:

o[ new_key ] = o[ old_key ];
delete o[ old_key ];

答案 1

我相信,最完整(和正确)的方法是:

if (old_key !== new_key) {
    Object.defineProperty(o, new_key,
        Object.getOwnPropertyDescriptor(o, old_key));
    delete o[old_key];
}

此方法可确保重命名的属性的行为与原始属性的行为相同

另外,在我看来,将其包装成函数/方法并将其放入其中的可能性与您的问题无关。Object.prototype


答案 2

如果要更改源对象,ES6 可以在一行中完成。

delete Object.assign(o, {[newKey]: o[oldKey] })[oldKey];

如果要创建新对象,则为两行。

const newObject = {};
delete Object.assign(newObject, o, {[newKey]: o[oldKey] })[oldKey];