2

如何在另一个数组中插入数组的项目?

内部意味着插入数组并“扩展”它以使其项目成为插入它们的数组的一部分。例子:

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

结果数组为:

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

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

如果 ExtJS 框架通过它的功能来促进上述内容,Array则可以在这种情况下使用这些功能。

4

3 回答 3

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));
于 2013-02-28T15:23:46.250 回答
2

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

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

将在指定索引处的主 Arr 内插入 innerArr。

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

更新

一个班轮修改 mainArr,它不返回值。

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

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

或(可读性较差)

mainArr.splice(0).splice.apply(this,[index,0].concat(innerArr))
于 2013-02-28T15:29:07.220 回答
1

你可以使用这个:

var mainArr=['a','e','f','g'];
var innerArr=['b','c','d'];
mainArr=mainArr.concat(innerArr).sort()
alert(mainArr)

http://jsfiddle.net/fR2cC/3/

于 2013-02-28T15:27:05.030 回答