我正在尝试将数组元素设置为对象属性
简化示例:
var array = ['a', 'b', 'c'];
var obj = { array[1]: 'good' }
上面会导致错误。
更新:实际上,我将对象作为另一个数组的一部分传递,即一个简化示例:
aObj[value] = ['one', {array[1]: 'good'}, 'two', 'three', 'four'];
设置obj[array[1]] = 'good';
样式意味着使用
aObj[value][1][array[1]] = 'good';
答案 0 :(得分:6)
{ array[1]: 'good' }
会抛出错误,因为当您在JavaScript中使用Object文字符号时,它会将:
之前的字符串视为标识符,并且有效的标识符名称不能包含[
或{ {1}}在其中。
所以,使用]
表示法,它允许任何字符串用作属性名称,如下所示
[]
答案 1 :(得分:3)
也许现在是开始提供ES6答案的时候了。在ECMAScript6中,您可以将表达式用作对象键:
var array = ['a', 'b', 'c'];
var obj = {
[array[1]]: 'good'
}
事实上,Firefox已经支持这种语法。
目前使用变量的唯一方法是使用括号表示法,如其他答案中所述。