Подтвердить что ты не робот

Concat 3 массива в 1 массив в 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);
4b9b3361

Ответ 1

Самое короткое (и самое быстрое) решение - arr = arr1.concat(arr2, arr3);

Альтернатива:

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

Ответ 2

Там не так много сделать. Вы можете упростить его:

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

Я бы использовал _.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]

Ответ 4

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

Ответ 5

Синтаксис распространения упрощает конкатенацию:

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

Вы можете даже включить элементы без массива inline:

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

Ответ 6

Более гибкий способ:

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