1. ホーム
  2. javascript

[解決済み] 新しい配列を作成せずに、既存のJavaScript配列を別の配列で拡張する方法

2022-03-21 20:48:12

質問

JavaScript の既存の配列を別の配列で拡張する方法、つまり Python の extend メソッドを使用します。

を実現したいのですが。

>>> a = [1, 2]
[1, 2]
>>> b = [3, 4, 5]
[3, 4, 5]
>>> SOMETHING HERE
>>> a
[1, 2, 3, 4, 5]

があるのは知っています。 a.concat(b) メソッドがありますが、これは単に最初の配列を拡張するのではなく、新しい配列を作成します。のときに効率的に動作するアルゴリズムが欲しいです。 a よりもかなり大きな b (をコピーしないもの)。 a ).

<サブ これは とは重複しません。 配列に何かを追加するには? -- ここでの目標は、一方の配列の内容全体を他方の配列に追加することであり、それを"in place"、すなわち拡張配列のすべての要素をコピーすることなく行うことです。

解決方法は?

その .push メソッドは複数の引数を取ることができます。この場合 スプレッド演算子 に渡すことで、2 番目の配列のすべての要素を引数として渡すことができます。 .push :

>>> a.push(...b)

ブラウザがECMAScript 6に対応していない場合は .apply の代わりに

>>> a.push.apply(a, b)

あるいは、もっとわかりやすいと思うのであれば

>>> Array.prototype.push.apply(a,b)

これらの解決策はすべて、もし配列 b が長すぎる(ブラウザによって異なりますが、10万要素程度でトラブルが発生します)。
を保証できない場合 b が十分に短い場合は、他の回答で説明されている標準的なループベースのテクニックを使用する必要があります。