为什么我不能从数组中声明一个对象?

时间:2015-09-11 19:10:35

标签: javascript

一个简单的例子,为什么会出错?

var zipped = [[0,1,2]];
var extracted = {};
var i = 0;
extracted[zipped[i][0]] = { zipped[i][1]: zipped[i][2] }
>>>Uncaught SyntaxError: Unexpected token [(…)

当这完全没问题的时候?

 extracted[0] = { 1: 2 }

2 个答案:

答案 0 :(得分:2)

因为Javascript对象文字语法不允许关键部分中的表达式。键总是字面的。这就是你写这个的原因:

{ foo: 'bar' }

并且foo不被视为变量。

对于变量键,您始终必须使用此模式:

var obj = {};
obj[varKey] = value;

答案 1 :(得分:0)

这是无效的语法。在对象文字中语法上允许一个数字。任意表达都不是。

相反,您需要创建对象,然后设置属性。

var obj = extracted[zipped[i][0]] = {};
obj[ zipped[i][1] ] = zipped[i][2];