如果我有:
var myArray = new Array();
myArray['hello'] = value;
如何将密钥'hello'更改为其他内容?
这样的事情会起作用。
var from = 'hello',
to = 'world',
i, value = myArray[from];
for( i in myArray )
if( i == from ) myArray.splice( i, 1 );
myArray[to] = value;
但是有原生功能或更好的方法吗?
修改
由于js中缺少关联数组,我想要做的就是尽可能有效地修改对象的属性名。
答案 0 :(得分:30)
在JavaScript中没有关联数组这样的东西。可以使用对象:
var myHash = new Object();
或
var myHash = {};
替换可以这样做:
myHash["from"] = "value";
myHash["to"] = myHash["from"];
delete myHash["from"];
但是写它的首选方式:
myHash.from = "value";
myHash.to = myHash.from;
delete myHash.from;
答案 1 :(得分:2)
您无法真正“更改”属性名称,但您始终可以将属性值分配给新名称,然后删除原始名称。
myArray['world'] = myArray.hello;
delete myArray.hello;
此外,您正在使用Array实例,但将其用作简单对象;你正在做的一切与以下一样有效:
var myArray = {};
您在发布的代码中尝试的“splice()”将不起作用,因为它仅适用于实际的整数索引数组属性,而不是命名属性。
“删除”并不真正删除属性真的无关紧要。 “未定义”值是您检查属性的对象时所获得的值,并且没有此属性。