在循环内推送数组中的对象

时间:2017-06-15 19:54:23

标签: javascript for-loop

我正在尝试将对象推入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"]

我做错了什么?

6 个答案:

答案 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});

每次都会创建一个新的。