JavaScript:对象重命名键
2022-08-29 23:19:52
有没有一种聪明的(即优化的)方法来重命名javascript对象中的键?
非优化的方法是:
o[ new_key ] = o[ old_key ];
delete o[ old_key ];
有没有一种聪明的(即优化的)方法来重命名javascript对象中的键?
非优化的方法是:
o[ new_key ] = o[ old_key ];
delete o[ old_key ];
我相信,最完整(和正确)的方法是:
if (old_key !== new_key) {
Object.defineProperty(o, new_key,
Object.getOwnPropertyDescriptor(o, old_key));
delete o[old_key];
}
此方法可确保重命名的属性的行为与原始属性的行为相同。
另外,在我看来,将其包装成函数/方法并将其放入其中的可能性与您的问题无关。Object.prototype
如果要更改源对象,ES6 可以在一行中完成。
delete Object.assign(o, {[newKey]: o[oldKey] })[oldKey];
如果要创建新对象,则为两行。
const newObject = {};
delete Object.assign(newObject, o, {[newKey]: o[oldKey] })[oldKey];