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

在javascript/下划线中将3个数组合并为1个数组,javascript,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); 没什么可做的。您可以简化它: arr = arr.concat(arr1).concat(arr2).concat(arr

是否有将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 = 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);
最短(和最快)的解决方案是
arr=arr1.concat(arr2,arr3)

备选方案:

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

我会使用
展平

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]
更灵活的方式:

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

arr.concat(arr1,arr2,arr3),您也可以使用
arr1+arr2+arr3
concat
@MuhammadHaseebKhan:不,您不能在JavaScript中这样做。这将把三个数组转换成字符串(在每个数组上调用.join(“,”)并连接这三个字符串。但是,例如,您可以在PHP中使用加号操作符来连接数组。您是对的。我错过了它。只有当OP使用下划线或lodash库时,这个解决方案才有效。Javascript有一个本机方法用于此目的。无论如何,我使用lodash在字典上执行map/reduce等操作,所以我也使用它在数组上执行这些操作。但是,是的,如果你不想使用lodash,你可以使用数组方法。另外一个选择是,我相信这就是我的答案。
var arraysToConcat = [arr1, arr2, arr3];
var arr = Array.prototype.concat.apply([], arraysToConcat);