改变js关联数组中的键

Change key in js associative array

本文关键字:数组 js 关联 改变      更新时间:2023-09-26

如果我有:

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

在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;

你不能真正"改变"属性名,但是你可以给一个新名称赋一个属性值,然后删除原来的名称。

myArray['world'] = myArray.hello;
delete myArray.hello;

同样,你正在使用一个数组实例,但使用它作为一个简单的对象;你所做的一切都可以用:

var myArray = {};

你在代码中尝试的"splice()"将不起作用,因为它只适用于实际的整数索引数组属性,而不是命名属性。

"delete"并没有真正删除一个属性,这并不重要。"undefined"值是当你检查一个对象的属性而没有这个属性时得到的值。