JavaScript:在另一个数组中插入数组的项目

时间:2013-02-28 15:20:44

标签: javascript arrays extjs

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

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

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

结果数组为:

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

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

如果ExtJS框架通过其Array函数促进了上述内容,则可以在这种情况下使用这些函数。

3 个答案:

答案 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)

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