我正在尝试将多个元素作为一个数组推送,但出现错误:
> a = []
[]
> a.push.apply(null, [1,2])
TypeError: Array.prototype.push called on null or undefined
我正在尝试做与我在 ruby 中做的类似的事情,我在想apply
这就像*
.
>> a = []
=> []
>> a.push(*[1,2])
=> [1, 2]
我正在尝试将多个元素作为一个数组推送,但出现错误:
> a = []
[]
> a.push.apply(null, [1,2])
TypeError: Array.prototype.push called on null or undefined
我正在尝试做与我在 ruby 中做的类似的事情,我在想apply
这就像*
.
>> a = []
=> []
>> a.push(*[1,2])
=> [1, 2]
您可以通过以下方式将多个元素推送到数组中
var a = [];
a.push(1, 2, 3);
console.log(a);
现在在 ECMAScript2015(又名 ES6)中,您可以使用扩展运算符一次附加多个项目:
var arr = [1];
var newItems = [2, 3];
arr.push(...newItems);
console.log(arr);
查看Kangax 的 ES6 兼容性表,了解哪些浏览器兼容
apply
当使用带有or的对象的大多数函数时call
,context
参数必须是您正在处理的对象。
在这种情况下,您需要a.push.apply(a, [1,2])
(或更准确地说Array.prototype.push.apply(a, [1,2])
)
您可以使用Array.concat
:
var result = a.concat(b);
如果要添加多个项目,则必须使用spread
运算符
a = [1,2]
b = [3,4,5,6]
a.push(...b)
输出将是
a = [1,2,3,4,5,6]
如果您想要替代Array.concat
ECMAScript 2015(又名 ES6、ES2015)中的替代方案,它不会修改数组而是返回一个新数组,您可以像这样使用扩展运算符:
var arr = [1];
var newItems = [2, 3];
var newerItems = [4, 5];
var newArr = [...arr, ...newItems, ...newerItems];
console.log(newArr);
请注意,这与push
方法不同,因为push
方法会改变/修改数组。
如果您想查看某些 ES2015 功能是否在您的浏览器中工作,请查看Kangax 的兼容性表。
如果您不想等待浏览器支持并希望在生产中使用 ES2015,您也可以使用Babel或类似的转译器。
有很多答案推荐使用:Array.prototype.push(a, b)
. 这是个好方法,但是如果你有很大的 b,你会遇到堆栈溢出错误(因为 args 太多)。这里要小心。
请参阅连接 N 个数组的最有效方法是什么?更多细节。
更简单的方法是
a = []
a.push(1,2,3)
另一种方法是
a = [...a, 4,5,6]
如果你想创建另一个数组
const b = a.concat(7,8,9)
一次推送多个对象通常取决于您如何声明array
.
我就是这样做的
//declaration
productList= [] as any;
现在push
记录
this.productList.push(obj.lenght, obj2.lenght, items);
我有同样的疑问,就我而言,一个更简单的解决方案对我有用:
let array = []
array.push(1, 2, 4, "string", new Object())
console.log(array)
// logs [ 1, 2, 4, 'string', {} ]
请使用 ES6扩展运算符:
let a = [1,2,3];
let b = [4,5,6];
a = [...a,...b];
// [1,2,3,4,5,6]
var a=[];
a.push({
name_a:"abc",
b:[]
});
a.b.push({
name_b:"xyz"
});