我有以下输入:
{
foo: 4,
bar: 3
}
我想修改此对象的键以获取:
{
x_foo_y: 4,
x_bar_y: 3
}
是否可以在不创建新对象的情况下修改对象? (jQuery可用)
答案 0 :(得分:4)
您需要添加密钥,然后删除旧密钥。
var obj = {
foo: 4,
bar: 3
};
obj.x_foo_y = obj.foo;
obj.x_bar_y = obj.bar;
delete obj.foo;
delete obj.bar;
alert(JSON.stringify(obj))
答案 1 :(得分:4)
是的,您只需添加新密钥并删除旧密钥:
obj.x_foo_y = obj.foo;
delete obj.foo;
obj.x_bar_y = obj.bar;
delete obj.bar;
请注意,在某些引擎(特别是Chrome中的V8)上,这将是对象的impact the performance。如果您不需要实际删除属性,则可以将其值设置为undefined
:
obj.x_foo_y = obj.foo;
obj.foo = undefined;
obj.x_bar_y = obj.bar;
obj.bar = undefined;
它不会产生影响(它是delete
使得V8将对象置于"字典模式,"这比V8慢得多&#39 ; s正常的编译类模式)。
如果你想为所有"拥有"对象中的属性:
var key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
obj["x" + key + "y"] = obj[key];
delete obj[key]; // Or obj[key] = undefined if that's okay for your use case
}
}