有没有将 3 个数组连接成 1 个数组的短途方法/最佳实践?
var arr = [],
arr1 = [ 1 , 2 , 3 ],
arr2 = [ 4 , 5 , 6 ],
arr3 = [ 7 , 8 , 9 ];
arr = arr.concat(arr1);
arr = arr.concat(arr2);
arr = arr.concat(arr3);
最短(也是最快)的解决方案是arr = arr1.concat(arr2, arr3);
选择:
-
arr = arr.concat(arr1, arr2, arr3)
-
arr = Array.prototype.concat(arr1, arr2, arr3)
-
arr = [].concat(arr1, arr2, arr3)
我会使用_.flatten
.
var arr = [[1,2,3], [4,5,6], [7,8,9]];
var result = _.flatten(arr) // [1,2,3,4,5,6,7,8,9]
扩展语法使连接变得容易:
arr = [...arr1, ...arr2, ...arr3]
您甚至可以内联包含非数组项:
arr = [...arr1, 42, ...arr2, ...arr3]
没有什么可做的。您可以简化它:
arr = arr.concat(arr1).concat(arr2).concat(arr3)
或者查看 Dinev @Radko答案,了解更简单(更好)的方法。
如果你有一个数组数组(数组数量可变),你可以尝试:
var m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
var new_m = [];
new_m.concat.apply(new_m, m);
_.reduce(arrays, function(result, arr) {
return result.concat(arr)
}, [])
更灵活的方式:
var arraysToConcat = [arr1, arr2, arr3];
var arr = Array.prototype.concat.apply([], arraysToConcat);
> 如果你在 2022 年在这里,有 3 个解决方案(语法简短),b c 是数组:
let x = [].concat(a, b, c);
let y = [...a, ...b, ...c];
let z = [a, b, c].flat();
以下基准:
z
是迄今为止最糟糕的。
y
使用小阵列更快,但使用最大阵列x
更快。
对于小数组,它总是很快。
所以,我们应该用最大的数组取最快的答案:x