17

我希望以下三个关联数组是相同的:

arr1 = { "dynamic":"foo", "bar":"baz" };

key = "dynamic";    
arr2 = { key:"foo", "bar":"baz" };

arr3 = {};
arr3[key] = "foo";
arr3["bar"] = "baz";

在上面的例子中,arr1arr3是相同的,但又arr2是不同的。

是否可以在 javascript 关联数组的声明中使用动态键?

4

5 回答 5

19

现在可以在任何支持 ES6 文字简写的浏览器/平台中,在 javascript 对象的声明中使用动态键:

key = "dynamic";    
arr2 = {
    [key]: "foo",  // "dynamic": "foo"
    "bar": "baz"
};
于 2017-08-03T15:26:39.813 回答
9

只有[]语法适用于动态键。您不能在文字中使用它们。所以你的答案是否定的,这是不可能的。

但是您可以使用文字来创建所有静态键,然后使用[]语法添加动态键。这通常比对所有元素使用.or[]表示法更漂亮。

于 2013-07-24T17:08:09.487 回答
7

我找到了解决方案。

执行以下操作:

var field='name';

var ourVar={};

ourVar[field] = 'Somethig';

来源:Javascript:变量作为数组键

于 2013-12-31T08:01:14.820 回答
1

既然你要求一个班轮,试试这个:

var key = 'dynamic', obj = (function(o) { o[key]='foo'; return o;})({bar: 'baz'});

这将使obj等于{bar: "baz", dynamic: "foo"}

于 2014-01-10T10:48:04.847 回答
0
var originalObj = {};//some data here


function addKeyValuePair(originalObj,key,value){
    originalObj = {...originalObj,[key]:value}
};
于 2020-05-01T21:11:33.030 回答