var temp = [{}]
var as = ['a', 'b']
for (i = 0; i < as.length; i++) {
temp[i].model = as[i]
}
我收到以下错误:
无法设置属性&#39;模型&#39;未定义的
答案 0 :(得分:2)
好的,这应该适合你:
var temp = [];
var as = ['a', 'b'];
for (i = 0; i < as.length; i++) {
temp[i] = temp[i] || {};
temp[i].model = as[i];
}
由于as
可能超过temp
,因此您需要确保temp[i]
存在,这正是temp[i] = temp[i] || {};
的作用:
temp[i]
存在,则无效。temp[i]
不存在,则会为{}
分配一个新的空对象(temp[i]
)。 请注意,我从{}
- &gt;中删除了temp = [{}]
temp = []
。你现在不需要第一个空对象。
如果你绝对肯定temp
在循环之前永远不会包含任何值,你可以这样做:
for (i = 0; i < as.length; i++) {
temp[i] = { model: as[i] };
}
或者:
temp = as.map(function(item){ return { model: item }});
答案 1 :(得分:0)
temp
的长度为1,as
的长度为2. temp[1]
因此未定义。
我认为这更好地传达了代码的意图,并且是正确的:
var temp = [];
var as = ['a', 'b'];
for (var i = 0; i < as.length; i++) {
temp[i] = {model: as[i]};
}
答案 2 :(得分:0)
要在temp
中始终拥有足够的值,您可以预先填充它:
var as = ['a', 'b'];
var temp = as.map(function() { return {}; });
for (i = 0; i < as.length; i++) {
temp[i].model = as[i]
}
答案 3 :(得分:0)
试试这个
var temp = [];
var as = ['a', 'b']
for (i = 0; i < as.length; i++) {
temp.push({'model':as[i]});
}
console.log(temp);
答案 4 :(得分:0)
这很简单。
使用以下内容解决您的问题。
> var temp =[[]]; var as = ['a','b'] for(i=0;i<as.length;i++){
> temp.push({model : as[i]}) }
>
> console.log(temp)
如果您有任何澄清,请告诉我