我有一个数组,其中所有元素也是数组(整数),称为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
最终只是一个整数数组。
我错过了什么?
答案 0 :(得分:7)
您缺少的是您正在向阵列数组中添加一个数组数组。您想要添加每个单独的数组。
您可以使用.apply()
执行此操作:
mainArray.splice.apply(mainArray, [0,1].concat(arraysToAdd));
因此,您传递的0
和1
参数会与您的arraysToAdd
一起形成您将通过{{1}传递给.splice()
的参数}。
演示: http://jsfiddle.net/QLwLA/
如果没有.apply()
,您需要单独添加它们,如下所示:
.apply()
答案 1 :(得分:2)
尝试一下:
mainArray.splice(0, 1, ...arraysToAdd)