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

Javascript 将数组元素设置为对象属性,javascript,object,Javascript,Object,我正在尝试将数组元素设置为对象属性 简化示例: 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[

我正在尝试将数组元素设置为对象属性

简化示例:

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

{array[1]:'good'}
引发错误,因为在JavaScript中使用对象文字表示法时,它将
之前的字符串视为标识符,并且有效标识符名称中不能包含
[
]

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

var array = ['a', 'b', 'c'];
var obj = {};
obj[array[1]] = 'good';

也许是时候开始给ES6答案了。在ECMAScript 6中,可以将表达式用作对象键:

var array = ['a', 'b', 'c'];
var obj = {
    [array[1]]: 'good'
}
事实上,Firefox已经支持这种语法


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

在ES6中,
之前,它不能是变量。
之前可能有一个表达式,如@dfsq所述“当然,我可以将数组元素声明为变量”。不可以,除非使用ECMAScript 6引入的计算属性名。您的第二个代码将生成键
“arr”
,而不是
“b”
@Oriol。。你是对的。。。非常感谢。我更新并更正了我的帖子:)天哪,数据结构非常混乱谢谢你。我用更多信息更新了我的帖子。我实际上是在为Firefox编写脚本,但是为了更兼容,我暂时使用ES5很高兴知道,当我编写Firefox插件时,我得到了部分更正:)在ES5中,您可以执行:
Object.defineProperty({},数组[1],{value:'Good',enumerable:true})
。这可能不会被视为一种进步。