在 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 扩展运算符)的技术可能会失败。对于这样的数组,使用循环是一种更好的方法。有关详细信息,请参阅https://stackoverflow.com/a/17368101/96100。
apply()