我有一个数组,其中所有元素也是数组(整数),称为 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
最终只是一个整数数组。
我错过了什么?
最佳答案
您缺少的是将一个数组数组添加到您的数组数组中。您想要添加每个单独的数组。
您可以使用 .apply()
来执行此操作:
mainArray.splice.apply(mainArray, [0,1].concat(arraysToAdd));
因此,您传递的 0
和 1
参数与您的 arraysToAdd
连接在一起,形成您要传递给 .splice()
通过 .apply()
。
演示: http://jsfiddle.net/QLwLA/
如果没有 .apply()
,您将需要单独添加它们,如下所示:
mainArray.splice(0, 1, arraysToAdd[0], arraysToAdd[1], arraysToAdd[2]);
关于javascript - 在 Javascript 中对嵌套数组使用拼接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976877/