推送到另一个数组后清空数组

时间:2013-09-30 11:18:24

标签: javascript jquery

我想在循环内将数组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;
}

1 个答案:

答案 0 :(得分: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: []
});

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