新しい配列を作成せずに、既存の JavaScript 配列を別の配列で拡張する方法 質問する

新しい配列を作成せずに、既存の JavaScript 配列を別の配列で拡張する方法 質問する

既存の 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)が欲しいですaba

注:これは配列に何かを追加するにはどうすればいいですか?-- ここでの目標は、1 つの配列の内容全体を別の配列に追加し、それを「インプレース」で、つまり拡張された配列のすべての要素をコピーせずに実行することです。

ベストアンサー1

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

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

ブラウザがECMAScript 6をサポートしていない場合は、.applyその代わり:

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

あるいは、もっとわかりやすいと思うなら、こうです:

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

b配列が長すぎる場合、これらのソリューションはすべてスタック オーバーフロー エラーで失敗することに注意してください(ブラウザーによって異なりますが、約 100,000 要素で問題が発生します)。配列が十分に短い
ことを保証できない場合はb、他の回答で説明されている標準的なループ ベースの手法を使用する必要があります。

おすすめ記事