既存の 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
注:これは、配列に何かを追加するにはどうすればいいですか?-- ここでの目標は、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
、他の回答で説明されている標準的なループ ベースの手法を使用する必要があります。