将数组元素设置为对象属性

ero*_*man 8 javascript object

我试图将数组元素设置为对象属性

简化示例:

var array = ['a', 'b', 'c'];
var obj = { array[1]: 'good' }
Run Code Online (Sandbox Code Playgroud)

上面会导致错误.

更新:事实上,我将对象作为另一个数组的一部分传递,即一个简化的例子是:

aObj[value] = ['one', {array[1]: 'good'}, 'two', 'three', 'four'];
Run Code Online (Sandbox Code Playgroud)

设置obj[array[1]] = 'good';样式意味着使用

aObj[value][1][array[1]] = 'good';
Run Code Online (Sandbox Code Playgroud)

the*_*eye 6

{ array[1]: 'good' }因为,当你在JavaScript中使用对象的文字符号,它之前将字符串抛出一个错误:的标识和有效的标识符名称不能[]在里面.

因此,使用[]符号,它允许任何字符串用作属性名称,如下所示

var array = ['a', 'b', 'c'];
var obj = {};
obj[array[1]] = 'good';
Run Code Online (Sandbox Code Playgroud)


dfs*_*fsq 5

也许是时候开始给出 ES6 的答案了。在 ECMAScript6 中,您可以使用表达式作为对象键:

var array = ['a', 'b', 'c'];
var obj = {
    [array[1]]: 'good'
}
Run Code Online (Sandbox Code Playgroud)

事实上,Firefox 已经支持这种语法。

目前使用变量的唯一方法是使用括号表示法,如其他答案中所述。