将多个元素推送到数组

2020/10/04 12:01 · javascript ·  · 0评论

我试图将多个元素作为一个数组推送,但是出现错误

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

我正在尝试做与红宝石类似的工作,我想这apply是类似的*

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

当使用带有apply的对象的大多数功能时callcontext参数必须是您正在处理的对象。

在这种情况下,您需要a.push.apply(a, [1,2])(或更正确地说Array.prototype.push.apply(a, [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兼容性表以查看兼容的浏览器

您可以使用Array.concat

var result = a.concat(b);

如果您想要Array.concatECMAScript 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,则将出现堆栈溢出错误(由于参数过多)。小心点

请参见连接N个数组的最有效方法是什么?更多细节。

var a=[];
a.push({
 name_a:"abc",
 b:[]
});

a.b.push({
  name_b:"xyz"
});

一次推送多个对象通常取决于您如何声明自己的对象array

我就是这样

//declaration
productList= [] as  any;

现在push记录

this.productList.push(obj.lenght, obj2.lenght, items);

如果要添加多个项目,则必须使用价差运算符

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

输出将是

a = [1,2,3,4,5,6]
本文地址:http://javascript.askforanswer.com/jiangduogeyuansutuisongdaoshuzu.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!