在javascript中将3个数组concat为1个数组/下划线

ifsvaxew  于 2022-12-17  发布在  Java
关注(0)|答案(7)|浏览(126)

是否有将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);
093gszye

093gszye1#

最短(也是最快)的解决方案是arr = arr1.concat(arr2, arr3);
替代方案:

  • arr = arr.concat(arr1, arr2, arr3)
  • arr = Array.prototype.concat(arr1, arr2, arr3)
  • arr = [].concat(arr1, arr2, arr3)
myzjeezk

myzjeezk2#

我会使用_.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]
kh212irz

kh212irz3#

Spread syntax简化了连接:

arr = [...arr1, ...arr2, ...arr3]

您甚至可以包含内联的非数组项:

arr = [...arr1, 42, ...arr2, ...arr3]
rseugnpd

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);
2ul0zpep

2ul0zpep5#

_.reduce(arrays, function(result, arr) {
    return result.concat(arr)
}, [])
de90aj5v

de90aj5v6#

更灵活的方式:

var arraysToConcat = [arr1, arr2, arr3];
var arr = Array.prototype.concat.apply([], arraysToConcat);
uhry853o

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

相关问题