为什么Array.push.apply不起作用?

sta*_*wed 43 javascript arrays apply

如所描述的在这里,一个快速的方法来追加数组b到阵列的在JavaScript是a.push.apply(a, b).

您会注意到对象a被使用了两次.我们真的只想要这个push函数,并b.push.apply(a, b)完成同样的事情 - apply的第一个参数this为应用函数提供了它.

我认为直接使用Array对象的方法可能更有意义:Array.push.apply(a, b).但这不起作用!

我很好奇为什么不,如果有更好的方法来实现我的目标.(应用该push函数而无需两次调用特定数组.)

Ven*_*Ven 64

Array.prototype.push,不Array.push

  • 为了将来参考,在Firefox中,`Array.push(a,b,c)`相当于`Array.prototype.push.apply(a,b,c)`.这只是为了方便. (6认同)
  • 啊,谢谢。出于某种原因, Array.push 是在 Firefox 中定义的,而不是在 Chrome 中。(至少在各自的 javascript 控制台中。)使用原型方法工作得很好。数字这是比较明显的事情。:) (2认同)

erd*_*dem 8

您也可以使用[].push.apply(a, b)更短的表示法.

  • @EugeneMala不,这将导致整个数组"b"作为新元素被推入"a":`var a = [1,2],b = [3,4]; a.push(b)中; // [1,2,数组[2]]` (15认同)

Dav*_*fin 6

当前版本的 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];
Run Code Online (Sandbox Code Playgroud)