我正在尝试将对象推入for循环内的数组中。预期的数据结构是
[{"valueItem":"item0"}, {"valueItem":"item1"}, {"valueItem":"item2"}, {"valueItem":"item3"}, {"valueItem":"item4"}]
我的代码是
var arr = [];
var obj = {};
for(var i = 0; i < 5; i++){
arr.push(obj.valueItem = 'item'+i);
}
console.log(arr)
但我得到的是
["item0", "item1", "item2", "item3", "item4"]
我做错了什么?
答案 0 :(得分:2)
试:arr.push({"valueItem":"item"+i});
好的,澄清一下,你必须在数组中推送一个对象来获得你期望的数组。 push(obj.valueItem =&#39; item&#39; + i)排序因为你在内部推送。
答案 1 :(得分:1)
执行此操作arr.push(obj.valueItem = 'item'+i);
你没有将obj
推入数组,而是在进行作业
obj.valueItem = 'item'+i
赋值的结果是返回值,在这种情况下是item+i
,
将对象推送到数组中执行此操作
arr.push({
valueItem: "item0"
})
答案 2 :(得分:0)
看起来你实际上并没有为每个循环创建一个新对象。也许试试:
arr.push( { valueItem: 'item'+i } );
。
{}将创建一个新的哈希对象,我们将把它推到数组上。
在您的初始代码中,您只创建了一个对象,因此您推送的内容是obj.valueItem='item'+i
的返回值。由于字符串赋值的返回值是实际字符串,因此您只需创建一个字符串数组。
答案 3 :(得分:0)
以下作品;)
var arr = [];
for(var i = 0; i < 5; i++){
var obj = {};
obj.valueItem = 'item' + i;
arr.push(obj);
}
console.log(arr)
答案 4 :(得分:0)
首先定义对象,然后将其推送到数组:
var arr = [];
for(var i = 0; i < 5; i++){
arr.push({valueItem: 'item'+i});
}
console.log(arr)
根据您的尝试:
var arr = [];
for(var i = 0; i < 5; i++){
var obj = {};
obj.valueItem = 'item'+i
arr.push(obj);
}
console.log(arr)
答案 5 :(得分:0)
您的预期结果为每个元素都有一个不同的对象。即使它们是相似的,因为它们具有valueItem proprerty,它们都是不同的。所以你需要在每次循环迭代时创建一个新的。你需要
arr.push({valueItem:"item"+i});
每次都会创建一个新的。