web-dev-qa-db-ja.com

Array.Push.applyが機能しないのはなぜですか?

here で説明したように、javascriptで配列bを配列aに追加する簡単な方法はa.Push.apply(a, b)です。

オブジェクトaが2回使用されることに注意してください。本当に必要なのはPush関数だけで、b.Push.apply(a, b)はまったく同じことを実現します。applyの最初の引数は、適用された関数のthisを提供します。

ArrayオブジェクトのメソッドArray.Push.apply(a, b)を直接使用する方が理にかなっていると思いました。しかし、これは機能しません!

なぜそうなのか、そして私の目標を達成するためのより良い方法があれば興味があります。 (特定の配列を2回呼び出す必要なくPush関数を適用します。)

41
starwed

Array.prototype.Push 、ないArray.Push

63
Ven

短い表記には[].Push.apply(a, b)を使用することもできます。

7
erdem

Array.prototype.concat

var a = [1, 2, 3, 4, 5];
var b = [6, 7, 8, 9];

a = a.concat(b); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
2

JSの現在のバージョンでは、配列を引数に展開できます。

var a = [1, 2, 3, 4, 5,];
var b = [6, 7, 8, 9];

a.Push(...b); //[1, 2, 3, 4, 5, 6, 7, 8, 9];
1
David Griffin