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また、2 つの配列を一緒にして、並べ替える.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))

指定されたインデックスで main Arr 内に innerArr を挿入します。

これにより、引数 index,0,...innerArr contents... を使用して 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 に答える