如何在另一个数组中插入数组的项目?
内部意味着插入数组并“扩展”它以使其项目成为插入它们的数组的一部分。例子:
var mainArr=[a,e,f,g];
var innerArr=[b,c,d];
结果数组为:
[a,b,c,d,e,f,g]
应保留插入项目的顺序。假设项目不可排序。
如果 ExtJS 框架通过它的功能来促进上述内容,Array
则可以在这种情况下使用这些功能。
如何在另一个数组中插入数组的项目?
内部意味着插入数组并“扩展”它以使其项目成为插入它们的数组的一部分。例子:
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))
将在指定索引处的主 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))
你可以使用这个:
var mainArr=['a','e','f','g'];
var innerArr=['b','c','d'];
mainArr=mainArr.concat(innerArr).sort()
alert(mainArr)