如何在数组中添加对象?

时间:2014-08-18 21:45:45

标签: javascript arrays

我正在尝试将对象推入数组

我有类似的东西

for(var i=0; i<test.length; i++){
    console.log(test[i])
    console.log(items[test[i]])
    productObj.push( { test[i] : items[test[i]]} );
}

两个console.log都显示了东西,但我在push()上有错误。错误是“Uncaught SyntaxError: Unexpected token [

任何人都可以帮我解决这个奇怪的问题吗?谢谢!

3 个答案:

答案 0 :(得分:3)

对象文字键需要是常量。 test[i]无法上班。您需要创建一个空对象并添加键/值对:

var o = {};
o[ test[i] ] = items[test[i]];

productObj.push( o );

答案 1 :(得分:2)

对象文字中的键不会被评估,并且必须是有效的标识符。

您只会从对象文字中获得相同的错误:{ test[i]: 1 }

您可以将new关键字与匿名函数结合使用来创建对象:

productObj.push( new function () { this[test[i]] = items[test[i]]; } );

如果您发现上述内容不太可读,则应事先创建对象:

var temp = {};
temp[test[i]] = items[test[i]];
productObj.push( temp );

答案 2 :(得分:1)

用于创建对象的{}语法中的条目的键不会被查找为变量,它必须是有效的标识符。由于括号,test[i]不是有效的标识符,即使它不会被评估。

要从test[i]创建密钥,您必须使用[]语法手动添加密钥。

var v = {};
v[test[i]] = ...