推送对象时数组重复对象

时间:2016-06-08 06:35:57

标签: javascript arrays

当我试图在数组上推送对象时,它将所有对象复制到最后一个推送对象。

 var seriesArr = [];
 var seriesDemo = {};

 var seriesFinal = finalArr[0]

 for (var o in finalArr[0]) {
    seriesDemo.valueField = o;
    seriesArr.push(seriesDemo);
 }

输出:

[{"valueField":"amount[3]"},{"valueField":"amount[3]"},{"valueField":"amount[3]"},{"valueField":"amount[3]"}]

It should be like: [{"valueField":"amount[0]"},{"valueField":"amount[1]"},{"valueField":"amount[2]"},{"valueField":"amount[3]"}]

1 个答案:

答案 0 :(得分:3)

也许你在找这个?

for (var o in finalArr[0]) {
   var seriesDemo = {}; // (Re-)Initialize here
   seriesDemo.valueField = o;
   seriesArr.push(seriesDemo);
}

问题是您每次都在更新全局seriesDemo哈希值,并通过引用将其推送到seriesArr。因此seriesArr中的所有条目都持有对最后一个条目的引用。