Javascript 将数组中的对象推送到循环中

Javascript 将数组中的对象推送到循环中,javascript,for-loop,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); }

我试图将对象推入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)
我做错了什么?

尝试:arr.push{valueItem:item+I}

好的,为了澄清这一点,您必须推送数组中的一个对象以获得预期的数组。
pushobj.valueItem='item'+i的工作原理大致相同,因为您正在分配内部推送。

看起来您实际上并没有为每个循环创建新对象。也许可以试试:

arr.push{valueItem:'item'+i}

{}将创建一个新的哈希对象,我们将其推送到数组上

在您的初始代码中,您只创建了一个对象,因此您要推的是obj.valueItem='item'+i的返回值。因为字符串赋值的返回值将是实际字符串,所以您只是创建了一个字符串数组。

通过这样做arr.pushobj.valueItem='item'+i

你不是将obj推入数组,而是在进行赋值

obj.valueItem='项目'+i

赋值的结果是返回值,在本例中为item+i

要将对象推入数组,请执行以下操作

arr.push({
  valueItem: "item0"
})
以下工作

var-arr=[]; forvar i=0;i<5;我++{ var obj={}; obj.valueItem='项目'+i; arr.pushobj; }
console.logarr首先定义对象,然后将其推送到数组:

var-arr=[]; forvar i=0;i<5;我++{ arr.push{valueItem:'item'+i}; }
console.logarr您的预期结果对于每个元素都有不同的对象。尽管它们相似之处在于它们有一个valueItem property,但它们都是不同的。因此,您需要在每个循环迭代中创建一个新的循环。你需要

arr.push({valueItem:"item"+i});

每次都会创建一个新项目。

是的,这是可行的…但是这个项目也应该有效不?这可能是因为您只更改了项目,所以obj.valueItem='item'+i只返回项目,所以只添加它。这是实现arr.push的3行代码{valueItem:item+i};什么是散列对象?在JavaScript中它有点多余,因为它们是相同的,但它只是一个数组,其中元素是按名称而不是按数字引用的。是的。我知道我错在哪里了。谢谢这完全有效
arr.push({valueItem:"item"+i});