什么是N个数组连接的最有效方法?

380

如何在JavaScript中高效地连接N个对象数组?

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


4
可能是JavaScript中合并/平铺数组的数组的重复问题。 - rofrol
24个回答

1
如果N个数组是从数据库获取而不是硬编码的,那么我会使用ES6来做到这一点。
let get_fruits = [...get_fruits , ...DBContent.fruit];

在我看来,最优雅的方式! - NaturalDevCR

0

0

看起来正确答案在不同的JS引擎中有所不同。以下是我从{{link1:ninjagecko答案中链接的测试套件}}中得到的结果:

  • [].concat.apply在Windows和Android上的Chrome 83中最快,其次是reduce(速度慢约56%);
  • 循环的concat在Mac上的Safari 13中最快,其次是reduce(速度慢约13%);
  • reduce在iOS上的Safari 12中最快,其次是循环的concat(速度慢约40%);
  • 元素级别的push在Windows上的Firefox 70中最快,其次是[].concat.apply(速度慢约30%)。

0

请记住,concat数组也可以有重复项,需要对项目进行排序。

步骤1

连接数组

let insights = emptyInsights.concat(defaultInsights, softInsights);

步骤2

删除重复项

insights = [...new Set(insights)];

步骤三

对数组进行排序

insights = insights.sort((a: Insight, b: Insight) =>
          a.publishedDate > b.publishedDate ? -1 : 1
        );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接