我正在尝试将对象推入数组
我有类似的东西
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 [
”
任何人都可以帮我解决这个奇怪的问题吗?谢谢!
答案 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]] = ...