如何在另一个数组中插入数组的项?
Inside 意味着插入数组并“扩展”它的项目,使其成为插入它们的数组的一部分。例如:
var mainArr=[a,e,f,g];
var innerArr=[b,c,d];
结果数组为:
[a,b,c,d,e,f,g]
应保留插入项目的顺序。假设项目不可排序。
如果ExtJS框架通过其Array
函数促进了上述内容,则可以在这种情况下使用这些函数。
答案 0 :(得分:3)
如果您知道“插入”的索引,可以使用concat
:
var result = mainArr.slice(0,2).concat(innerArr, mainArr.slice(2));
你也可以只将concat
两个数组放在一起,然后用.sort(function (a, b) { return a - b; });
对它们进行排序,如果它们只包含有序的数字。
编辑:我不会建议.splice
因为它需要标量参数,但是由于.apply
的魔力,你仍然可以做到:
Array.prototype.splice.apply(mainArr, [index,0].concat(innerArr));
答案 1 :(得分:2)
如果要将数组插入某个索引:
mainArr.splice.apply(mainArr,[index,0].concat(innerArr))
将在指定索引处的主Arr中插入innerArr。
这将在mainArr上运行splice,其参数为index,0,... innerArr contents ...并在指定的索引处添加这些额外的参数。
one liner修改mainArr,它不返回值。
如果你需要保留mainArr,你可以克隆它
newarr = mainArr.splice(0)
newarr.splice.apply(newArr,[index,0].concat(innerArr))
或(不太可读)
mainArr.splice(0).splice.apply(this,[index,0].concat(innerArr))
答案 2 :(得分:1)
您可以使用:
var mainArr=['a','e','f','g'];
var innerArr=['b','c','d'];
mainArr=mainArr.concat(innerArr).sort()
alert(mainArr)