在Javascript中使用嵌套数组拼接

jac*_*ism 1 javascript arrays splice

我有一个数组,其中所有元素也是数组(整数),被称为mainArray.我试图用来splice()添加和删​​除其元素(子阵列).

最初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
Run Code Online (Sandbox Code Playgroud)

我希望最后的长度为mainArray3(因为它应该包含3个子数组),但它似乎splice()是扁平的arraysToAdd,因此mainArray最终只是一个整数数组.

我错过了什么?

coo*_*ter 7

你缺少的是你在阵列数组中添加了一个数组数组.您想要添加每个单独的数组.

你可以.apply()这样做:

mainArray.splice.apply(mainArray, [0,1].concat(arraysToAdd));
Run Code Online (Sandbox Code Playgroud)

所以01你传递的参数与您的加入arraysToAdd,从而形成你要传递给参数.splice()通过.apply().

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


没有.apply(),你需要单独添加它们,如下所示:

mainArray.splice(0, 1, arraysToAdd[0], arraysToAdd[1], arraysToAdd[2]);
Run Code Online (Sandbox Code Playgroud)

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