更改js关联数组中的键

时间:2011-07-28 20:25:30

标签: javascript

如果我有:

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中缺少关联数组,我想要做的就是尽可能有效地修改对象的属性名。

2 个答案:

答案 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()”将不起作用,因为它仅适用于实际的整数索引数组属性,而不是命名属性。

“删除”并不真正删除属性真的无关紧要。 “未定义”值是您检查属性的对象时所获得的值,并且没有此属性。