0

我想在循环内将数组 A 推送到 B ,然后对于 B 的每次迭代,我都需要删除数组 A 并创建新数组。我在清除数组之前获取了所有数据,但在清除后我得到了空值的数组 B

代码 :

for (i = 0; i < XArray.length; i++) {
    var pointsArray = [];

    for (j = 0; j < XArray.length; j++) {

        if (XArray[i] == XArray[j]) {
            pointsArray.push([parseFloat(YArray[i]), parseFloat(ZArray[i])]);
        }
    }

    dataSource.push({
        name: i,
        data: pointsArray
    });
    pointsArray.length = 0;
}
4

1 回答 1

3

最后一行

pointsArray.length = 0;

删除您在第一行创建的数组中的每个元素。而且由于所有对象都是通过引用分配的(并且数组是对象),因此对象的data属性现在将指向一个空数组。这是一个简化的示例:

var a = [1, 2];
var b = a;
a.length = 0;
console.log(b); // [] -- an empty array

因此,您当前的代码具有相同的效果

dataSource.push({
    name: i,
    data: []
});

解决方案:只需删除最后一行,它将按预期工作。

于 2013-09-30T11:26:15.843 回答