2014-02-24 44 views
1

我有一個數組,其中所有元素也是數組(整數),稱爲mainArray。 我正在嘗試使用splice()添加和刪除其元素(子陣列)。在Javascript中使用嵌套數組的拼接

最初mainArray有一個單一元素(一個整數的數組),我想刪除它並添加3個新的子陣列到mainArray,這些都在arraysToAdd中定義。

mainArray = new Array(new Array(1)); 
arraysToAdd = new Array(new Array(1,2), new Array(1,4), new Array(1,7)); 

alert(arraysToAdd.length); // Returns: 3: as expected 

mainArray.splice(0,1,arraysToAdd); 

alert(mainArray.length); // Returns: 1: I want this to be 3 

我期望的mainArray長度在端部爲3(因爲它應該含有3子陣列),但它似乎是splice()壓扁arraysToAddmainArray最終只是被一個整數數組。

我錯過了什麼?

+1

'console.log(mainArray)' – zerkms

+0

*「,但看起來'splice()'正在壓扁'arraysToAdd'」*呃,如果其他數組被平化爲''mainArray'' mainArray'?如果'mainArray'是一個整數數組,那長度是不是6? –

+2

你知道你可以只鍵入'var mainArray = [[1]];',對吧? – PHPglue

回答

7

你缺少的是你要添加陣列陣列到你的數組陣列。您想要添加每個單獨的數組。

您可以使用.apply()做到這一點:

mainArray.splice.apply(mainArray, [0,1].concat(arraysToAdd)); 

所以你通過了01參數與您arraysToAdd連接形成你要通過.apply()傳遞到.splice()的參數。

演示:http://jsfiddle.net/QLwLA/


沒有.apply(),你會需要單獨添加它們,就像這樣:

mainArray.splice(0, 1, arraysToAdd[0], arraysToAdd[1], arraysToAdd[2]); 

演示:http://jsfiddle.net/QLwLA/1/

+0

輝煌,謝謝 – jacobianism

+0

不客氣。 –