在Javascript中使用嵌套数组拼接

时间:2014-02-24 00:42:58

标签: javascript arrays splice

我有一个数组,其中所有元素也是数组(整数),称为mainArray。 我正在尝试使用splice()添加和删除其元素(子数组)。

最初mainArray有一个元素(一个带有一个整数的数组),我希望删除它并向mainArray添加3个新的子数组,这些子数组在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()正在展平arraysToAdd,因此mainArray最终只是一个整数数组。

我错过了什么?

2 个答案:

答案 0 :(得分:7)

您缺少的是您正在向阵列数组中添加一个数组数组。您想要添加每个单独的数组。

您可以使用.apply()执行此操作:

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

因此,您传递的01参数会与您的arraysToAdd一起形成您将通过{{1}传递给.splice()的参数}。

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


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

.apply()

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

答案 1 :(得分:2)

尝试一下:

mainArray.splice(0, 1, ...arraysToAdd)