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

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

推荐答案

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

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接受由要添加到数组中的元素组成的多个参数这一事实可以用来将元素从一个数组添加到另一个数组的末尾,而无需生成新数组.对于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相关问答推荐

对数组中的所有数字求和,直到达到某个值

CSS 过渡不适用于 classList.add

React,将状态从子组件传递给父组件

如何在 vanilla JS 中重写这个 ramda.js 代码

如何将 Rsa 密钥对(字符串)转换为加密密钥以对数据进行签名

使用javascript定位h1中每个单词的首字母

如何判断数组是否包含给定元素

React,无法访问在 useEffect() 中传递给 setInterval() 的函数内状态变量的更新值

当一次按下超过 2 个键时,p5.js keyIsDown() 行为不一致

迭代对象并替换值

我们如何使用 Nodejs 从 web3 获取数据

第二次调用函数会影响第一次调用的变量

锚标记点击以区分相同的 onClick Javascript 函数

我在使用 Route 时收到空白的 react-app 页面

使用谷歌脚本应用程序获取帖子的“401错误代码”

如何将对象键设置为公分母?

TypeError: obj is not a constructor (js / node 中的错误)

构建自定义选项卡组件时无法在渲染函数中使用 TransitionGroup

将引号包围的数组数组转换为字符串数组

为什么这个二维数组过滤不起作用?