在javascript / underscore中将3个数组连接成1个数组

时间:2014-02-16 12:36:35

标签: javascript

是否有简短的方法/最佳实践将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);

6 个答案:

答案 0 :(得分:35)

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

备选方案:

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

答案 1 :(得分:11)

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

答案 2 :(得分:4)

没有太多工作要做。你可以简化它:

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

答案 3 :(得分:3)

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

答案 4 :(得分:3)

Spread syntax简化了连接:

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

您甚至可以在线包含非数组项目:

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

答案 5 :(得分:1)

更灵活的方式:

row_id,0,2,4
0,     0,1,1
2,     0,1,0