在JavaScript中连接N个对象数组的最有效方法是什么?

数组是可变的,结果可以存储在其中一个输入数组中.

推荐答案

如果要连接两个以上的数组,为了方便和可能的性能,concat()是最好的 Select .

var a = [1, 2], b = ["x", "y"], c = [true, false];
var d = a.concat(b, c);
console.log(d); // [1, 2, "x", "y", true, false];

对于仅连接两个数组,push接受由要添加到数组中的元素组成的多个参数这一事实可以用来将元素从一个数组添加到另一个数组的末尾,而无需生成新array.对于slice(),它也可以代替concat()而使用there appears to be no performance advantage from doing this.

var a = [1, 2], b = ["x", "y"];
a.push.apply(a, b);
console.log(a); // [1, 2, "x", "y"];

在ECMAScript 2015及更高版本中,这可以进一步减少到

a.push(...b)

然而,对于大型数组(大约https://stackoverflow.com/a/17368push/96100000个成员或更多),将元素数组传递到push的技术(使用apply()或ECMAScript 2015扩展运算符)可能会失败.对于这样的数组,使用循环是更好的方法.详情见https://stackoverflow.com/a/17368push/96100.

Javascript相关问答推荐

为什么getRecord()会因为与_logger相关的错误而失败?(使用Hedera SDK)

materialized - activeIndex返回-1

使用续集和下拉栏显示模型属性

使用ThreeJ渲染的形状具有抖动/模糊的边缘

单个HTML中的多个HTML文件

WhatsApp Cloud API上载问题:由于MIME类型不正确而导致接收&Quot;INVALID_REQUEST";错误

使用js构造一个html<;ath&>元素并不能使其正确呈现

为什么这个.add.group({})在教程中运行得很好,但在我的游戏中就不行了?

TypeError:无法读取未定义的属性(正在读取';宽度';)

向数组中的对象添加键而不改变原始变量

在SHINY R中的嵌套模块中,不能使用Java代码

为什么当我更新数据库时,我的所有组件都重新呈现?

第一项杀死下一项,直到数组长度在javascript中等于1

构建器模式与参数对象输入

react 路由如何使用从加载器返回的数据

为什么我不能使用其同级元素调用和更新子元素?

P5.js中矩形内的圆弧

是否设置以JavaScript为背景的画布元素?

JS/css:将数字输入的S函数和可调整大小的元素S函数绑定在一起

为什么我的Reaction组件不能使用createBrowserRouter呈现?