JavaScript:在另一个数组中插入数组's项

JavaScript: insert an array's items inside another array

本文关键字:数组 另一个 JavaScript 插入      更新时间:2023-09-26

如何将数组的项插入到另一个数组中?

Inside表示插入数组并将其"展开",使其项成为所插入数组的一部分。例子:

var mainArr=[a,e,f,g];
var innerArr=[b,c,d];

,结果数组为:

[a,b,c,d,e,f,g]

应保留插入项的顺序。假设项目不可排序。

如果ExtJS框架通过其Array函数促进上述功能,则可以在此场景中使用

如果您知道要"插入"的索引,您可以使用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));

如果您想在某个索引处插入数组:

mainArr.splice.apply(mainArr,[index,0].concat(innerArr))

将在指定的索引位置将innerArr插入到main Arr中。

这将在mainArr上运行splice,参数index,0,…innerArr内容……并在指定的索引处添加这些额外的参数。

更新

一行修改了mainArr,它没有返回值。

如果需要保留mainArr,可以克隆它

newarr = mainArr.splice(0)
newarr.splice.apply(newArr,[index,0].concat(innerArr))

或(不太可读)

mainArr.splice(0).splice.apply(this,[index,0].concat(innerArr))

你可以这样做:

var mainArr=['a','e','f','g'];
var innerArr=['b','c','d'];
mainArr=mainArr.concat(innerArr).sort()
alert(mainArr)
http://jsfiddle.net/fR2cC/3/