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

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


当前回答

用ES6缩短。

new Set([].concat(...Array));

这可以连接并唯一多个数组;

let Array = [ [“vue”,“巴别塔”,“npm”,“杯”,“mysql”,“少”,“laravel”), (“jquery”、“反应”,js, css, wordpress,“html”,“引导”), [“vue”,“巴别塔”,“npm”,“杯”,“mysql”,“少”,“laravel”), (‘角’,‘cms’,‘js’,‘css’,‘graphql’,‘nodejs ', ' php '], (“severless”、“无头”、“js”,“css”,“设计”,“ps”,“php”), ] const Boom = new Set([].concat(…数组)); //不需要 let dStr = "; Boom.forEach (e = > { dStr += e + ' '; }) document . write(下游); < div class = "结果" > < / div >

其他回答

你可以用这个-

let array2d = [[1, 2, 3], [5, 4], [7, 8]];

let array1d = array2d.reduce((merged, block) => {
                          merged.push(...block); 
                          return merged; 
                     }, []);

console.log(array1d); // [1, 2, 3, 5, 4, 7, 8]

或者从上面的一个答案中我喜欢这个-

let array2d = [[1, 2, 3], [5, 4], [7, 8]];
console.log([].concat(...array2d)); // [1, 2, 3, 5, 4, 7, 8]

或者我发现的这个

let array2d = [[1, 2, 3], [5, 4], [7, 8]];
console.log(array2d.join().split(',').map(Number); // [1, 2, 3, 5, 4, 7, 8]

用Push合并数组:

Const array1 = [2,7,4]; Const array2 = [3,5,9]; array1.push(…array2); console.log (array1)

使用Concat和Spread运算符: Const array1 = [1,2]; Const array2 = [3,4]; //方法1:Concat Const combined1 =[]。concat (array1 array2); //方法二:Spread Const combined2 =[…]array1……array2); console.log (combined1); console.log (combined2);

您可以使用jsperf.com站点来比较性能。这是concat的链接。

增加了以下之间的比较:

var c = a.concat(b);

and:

var c = [];
for (i = 0; i < a.length; i++) {
    c.push(a[i]);
}
for (j = 0; j < b.length; j++) {
    c.push(b[j]);
}

第二款在镀铬的情况下几乎要慢10倍。

使用Array.prototype.concat.apply来处理多个数组的连接:

var resultArray = Array.prototype.concat.apply([], arrayOfArraysToConcat);

例子:

var a1 = [1, 2, 3],
    a2 = [4, 5],
    a3 = [6, 7, 8, 9];
Array.prototype.concat.apply([], [a1, a2, a3]); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

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

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