2013-09-30 58 views
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; 
} 

回答

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: [] 
}); 

解决方案同样的效果:只是删除最后一行和预期它会奏效。

+1

或者使用'slice' - >'data:pointsArray.slice()'复制一份副本' – Xotic750

+0

鞠躬主。+ 1 –

+0

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