在JavaScript中连接N个对象数组的最有效的方法是什么?
数组是可变的,结果可以存储在一个输入数组中。
在JavaScript中连接N个对象数组的最有效的方法是什么?
数组是可变的,结果可以存储在一个输入数组中。
当前回答
你可以看看这个博客,在这里push()和concat()的性能进行了比较。此外,定制函数在特定场景下表现更好。
https://dev.to/uilicious/javascript-array-push-is-945x-faster-than-array-concat-1oki
其他回答
新回答
对于多个数组和ES6的数组,使用
arr.flat();
例如:
const arr = [[1, 2, 3], [4, 5, 6], [7, 8 ,9]];
const newArr = arr.flat();
// output: [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
这将适用于节点> 11和现代浏览器。
旧的答案
(把它留在这里,以防旧版本的节点需要它):
对于多个数组和ES6的数组,使用
Array.prototype.concat(...arr);
例如:
const arr = [[1, 2, 3], [4, 5, 6], [7, 8 ,9]];
const newArr = Array.prototype.concat(...arr);
// output: [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
轻松使用concat函数:
var a = [1,2,3];
var b = [2,3,4];
a = a.concat(b);
>> [1,2,3,2,3,4]
您可以使用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倍。
如果N个数组是从数据库中获得的,并且没有硬编码,i将使用ES6这样做
let get_fruits = [...get_fruits , ...DBContent.fruit];
这是一个函数,通过它可以连接多个数组
function concatNarrays(args) {
args = Array.prototype.slice.call(arguments);
var newArr = args.reduce( function(prev, next) {
return prev.concat(next) ;
});
return newArr;
}
的例子,
console.log(concatNarrays([1, 2, 3], [5, 2, 1, 4], [2,8,9]));
将输出
[1,2,3,5,2,1,4,2,8,9]