是否有将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);
093gszye1#
最短(也是最快)的解决方案是arr = arr1.concat(arr2, arr3);替代方案:
arr = arr1.concat(arr2, arr3);
arr = arr.concat(arr1, arr2, arr3)
arr = Array.prototype.concat(arr1, arr2, arr3)
arr = [].concat(arr1, arr2, arr3)
myzjeezk2#
我会使用_.flatten。
_.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]
kh212irz3#
Spread syntax简化了连接:
arr = [...arr1, ...arr2, ...arr3]
您甚至可以包含内联的非数组项:
arr = [...arr1, 42, ...arr2, ...arr3]
rseugnpd4#
没什么可做的你可以简化一下
arr = arr.concat(arr1).concat(arr2).concat(arr3)
或者看看@Radko Dinev回答一个更简单(更好)的方法。如果您有数组的数组(数组的数量可变),可以尝试:
var m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; var new_m = []; new_m.concat.apply(new_m, m);
2ul0zpep5#
_.reduce(arrays, function(result, arr) { return result.concat(arr) }, [])
de90aj5v6#
更灵活的方式:
var arraysToConcat = [arr1, arr2, arr3]; var arr = Array.prototype.concat.apply([], arraysToConcat);
uhry853o7#
如果你在2022年,有3个解决方案(简短的语法),a B c是数组:
let x = [].concat(a, b, c); let y = [...a, ...b, ...c]; let z = [a, b, c].flat();
以下基准:z是目前为止最糟糕的。y在使用小阵列时速度更快,但x在使用最大阵列时速度更快。对于小数组,它总是很快的。因此,我们应该使用最大的阵列来获得最快的答案:x
z
y
x
7条答案
按热度按时间093gszye1#
最短(也是最快)的解决方案是
arr = arr1.concat(arr2, arr3);
替代方案:
arr = arr.concat(arr1, arr2, arr3)
arr = Array.prototype.concat(arr1, arr2, arr3)
个arr = [].concat(arr1, arr2, arr3)
myzjeezk2#
我会使用
_.flatten
。kh212irz3#
Spread syntax简化了连接:
您甚至可以包含内联的非数组项:
rseugnpd4#
没什么可做的你可以简化一下
或者看看@Radko Dinev回答一个更简单(更好)的方法。
如果您有数组的数组(数组的数量可变),可以尝试:
2ul0zpep5#
de90aj5v6#
更灵活的方式:
uhry853o7#
如果你在2022年,有3个解决方案(简短的语法),a B c是数组:
以下基准:
z
是目前为止最糟糕的。y
在使用小阵列时速度更快,但x
在使用最大阵列时速度更快。对于小数组,它总是很快的。
因此,我们应该使用最大的阵列来获得最快的答案:
x