JavaScript关联数组声明中的动态键一行代码

19

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

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

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

arr3 = {};
arr3[key] = "foo";
arr3["bar"] = "baz";
在上面的例子中,arr1arr3是相同的,但是arr2是不同的。 在JavaScript关联数组的声明中是否可能使用动态键?

1
不可以在对象字面声明中使用变量作为键。 - Musa
No - Bergi
重复的问题:如何在Javascript对象中使用变量作为键名?(以及其他很多类似的问题) - Bergi
5个回答

20

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

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

9
只有[]语法适用于动态键,你不能在字面值中使用它们。因此,答案是否定的。
但是你可以使用字面值创建所有静态键,然后使用[]语法添加动态键。通常,这比为所有元素使用.[]符号更美观。

7

1
"由于您要求一行代码,尝试使用以下代码:"
var key = 'dynamic', obj = (function(o) { o[key]='foo'; return o;})({bar: 'baz'});

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

0
var originalObj = {};//some data here


function addKeyValuePair(originalObj,key,value){
    originalObj = {...originalObj,[key]:value}
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接