在JavaScript中串联N个对象数组的最有效方法是什么?
数组是可变的,结果可以存储在输入数组之一中。
如果要连接两个以上的数组,concat()那么这样做是为了方便和可能的性能。
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()但是这样做似乎没有性能优势。
push
slice()
var a = [1, 2], b = ["x", "y"]; a.push.apply(a, b); console.log(a); // [1, 2, "x", "y"];
在ECMAScript 2015及更高版本中,这可以进一步减少到
a.push(...b)
但是,似乎对于大型数组(成员数为100,000或更多),将元素数组传递给push(使用apply()或ECMAScript 2015扩展运算符)的技术可能会失败。对于此类阵列,使用循环是一种更好的方法。。
apply()