2013-09-30 87 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; –