Ответ 1
Самое короткое (и самое быстрое) решение - arr = arr1.concat(arr2, arr3);
Альтернатива:
-
arr = arr.concat(arr1, arr2, arr3)
-
arr = Array.prototype.concat(arr1, arr2, arr3)
-
arr = [].concat(arr1, arr2, arr3)
Есть ли короткий путь/наилучшая практика для конкатенации 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)
Там не так много сделать. Вы можете упростить его:
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);
Я бы использовал _.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]
_.reduce(arrays, function(result, arr) {
return result.concat(arr)
}, [])
Синтаксис распространения упрощает конкатенацию:
arr = [...arr1, ...arr2, ...arr3]
Вы можете даже включить элементы без массива inline:
arr = [...arr1, 42, ...arr2, ...arr3]
Более гибкий способ:
var arraysToConcat = [arr1, arr2, arr3];
var arr = Array.prototype.concat.apply([], arraysToConcat);