[英]Using splice with nested arrays in Javascript
我有一个数组,其中所有元素也是(整数)数组,称为mainArray
。 我正在尝试使用splice()
添加和删除其元素(子数组)。
最初mainArray
具有一个元素(一个具有一个整数的Array),我希望将其删除并将3个新的子mainArray
添加到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()
似乎将arraysToAdd
平,所以mainArray
最终只是一个整数数组。
我想念什么?
您所缺少的是要在数组中添加一个数组。 您想改为添加每个单独的数组。
您可以使用.apply()
执行此操作:
mainArray.splice.apply(mainArray, [0,1].concat(arraysToAdd));
因此,您传递的0
和1
参数与arraysToAdd
结合arraysToAdd
,形成要通过.splice()
传递给.splice()
.apply()
。
演示: http : //jsfiddle.net/QLwLA/
如果没有.apply()
,则需要单独添加它们,如下所示:
mainArray.splice(0, 1, arraysToAdd[0], arraysToAdd[1], arraysToAdd[2]);
演示: http : //jsfiddle.net/QLwLA/1/
尝试这个:
mainArray.splice(0, 1, ...arraysToAdd)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.