我试图推多个元素作为一个数组,但得到一个错误:

> a = []
[]
> a.push.apply(null, [1,2])
TypeError: Array.prototype.push called on null or undefined

我试图做类似的事情,我在ruby中做,我认为应用是类似*的东西。

>> a = []
=> []
>> a.push(*[1,2])
=> [1, 2]

当前回答

我也有同样的疑问,但对我来说,有一个更简单的解决办法:

let array = []
array.push(1, 2, 4, "string", new Object())
console.log(array)
// logs [ 1, 2, 4, 'string', {} ]

其他回答

假设你有一个包含前10个数字的数组,但缺少一个数字,比如6。 您可以使用以下代码将其插入到索引5处的数组中

函数insert(数组,索引,obj) { 返回[…array.slice(0,index), obj,…array.slice(index)] } 让arr = [1,2,3,4,5,7,8,9,0] Arr = insert(Arr, 5,6) console.log (arr)

作为一种选择,你可以使用Array.concat:

var result = a.concat(b);

这将创建并返回一个新数组,而不是将项推入同一个数组。如果您不想修改源数组,而是要对其进行浅拷贝,那么它可能很有用。

如果你想添加多个项目,你可以使用Array.push()和展开操作符:

a = [1,2]
b = [3,4,5,6]
a.push(...b)

结果将是

a === [1,2,3,4,5,6]

如果你想要Array的替代品。concat在ECMAScript 2015(也就是ES6, ES2015),像它一样,不修改数组,但返回一个新的数组,你可以像这样使用展开操作符:

瓦尔·阿r = [1] 姓简的行动; 姓沃的衣服 世界上的人arr, ...newItems, ... newerItems]; console.log (newArr);

注意,这与push方法不同,因为push方法会改变/修改数组。

如果你想看看某些ES2015特性在你的浏览器中是否有效,请检查Kangax的兼容性表。

如果你不想等待浏览器的支持,并且想在生产环境中使用ES2015,你也可以使用Babel或类似的转译器。

我也有同样的疑问,但对我来说,有一个更简单的解决办法:

let array = []
array.push(1, 2, 4, "string", new Object())
console.log(array)
// logs [ 1, 2, 4, 'string', {} ]