更改属性名称

IT技术 javascript
2021-02-11 19:09:04

我有一个 JavaScript 对象,如下所示:

var a = { Prop1: 'test', Prop2: 'test2' }

如何将 Prop1 的“属性名称”更改为 Prop3?

我试过

for (var p in r) p.propertyName = 'Prop3';

但这没有用。

3个回答

这不是直接可能的。

你可以写

a.Prop3 = a.Prop1;
delete a.Prop1;
@user276648:加上 GC 流失。
2021-03-16 19:09:04
@Dmitry:只有当您意识到您的应用程序因为使用删除而运行缓慢时才问自己这个问题。另外我猜如果有很多属性,创建一个新对象可能会更长。
2021-03-27 19:09:04
delete功能通常因其性能而受到反对。重新创建一个对象不是更好吗?
2021-03-30 19:09:04
@Dmitry 使用“删除”的缺点是什么?
2021-04-04 19:09:04

使用建议的属性其余符号,写

const {Prop1, ...otherProps} = a;

const newObj = {Prop3: Prop1, ...otherProps};

Babel 的object rest spread transform支持这一点

添加到对象休息传播解决方案

const { Prop1: Prop3, ...otherProps } = a;
const newObj = { Prop3, ...otherProps };