Как объединить массивы в JavaScript
array1 = [ 1,2,3]
array2 = [4,5,6] Массивы по своей сути это структура данных, представляющая упорядоченную коллекцию индексированных элементов.
И довольно часто в практике возникает необходимость объединения массивов - когда два и более отдельных массивов превращаются в большой массив содержащий все элементы первоначальных массивов.
Например объединение массива [1,2] и [5,6] приведет к появлению массива [1,2,5,6]
Мы рассмотрим три способа объединить массивы в JavaScript: 2 иммутабельных (новый массив создается после объединения)
Способ 1 - объединение массивов через оператор spread #
Если вам нужен один хороший способ объединения массивов в JavaScript, тогда оператор spread - ваш выбор.
Напишите внутри массива две или более переменных с префиксом в виде spread оператора ... и JavaScript объединит их в один новый массив. Собственно синтаксис:
const result = [...array1, ...array2];Как пример предположим у нас есть два массива содержащих фамилии студентов students1 и students2
const students1 = ['Иванов', 'Сидоров'];
const students2 = ['Петров', 'Курочкина'];
const all = [...students1, ...students2];
all; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина']const all = [...students1, ...students2] создает новый массив содержащий элементы исходных массивов students1 и students2
Порядок в котором вы перечисляете массивы при помощи оператора spread имеет значение! Элементы массива вставляются в том порядке в котором идут переменные этих массивов.
В нашем примере поменяем порядок:
const students1 = ['Иванов', 'Сидоров'];
const students2 = ['Петров', 'Курочкина'];
const all = [...students2, ...students1];
all; // ['Петров', 'Курочкина', 'Иванов', 'Сидоров'] Spread оператор позволяет объединять 2 и более массивов:
const newArray = [...array1, ...array2, ...array3, ...arrayN];Способ 2 - объединение массивов методом array.concat() #
Если вы предпочитаете функциональные методы объединения массивов, то можете использовать array1.concat(array2) метод:
const newArray = array1.concat(array2);или в другом варианте
const newArray = [].concat(array1, array2);array.concat() не изменяет исходные массивы, а формирует новый имеющий в составе элементы объединяемых массивов.
Давайте попробуем повторить пример из первого способа:
const students1 = ['Иванов', 'Сидоров'];
const students2 = ['Петров', 'Курочкина'];
const all_1 = students1.concat(students2);
const all_2 = [].concat(students1,students2);
all_1; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина']
all_2; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина']Метод concat позволяет объединять более двух массивов:
const newArray = [].concat(array1, array2, array3, arrayN);Способ 3 - объединение массивов через метод array.push() #
Как мы видели ранее два предыдущих способа создают новый массив содержащий исходные, но иногда необходимо не создавать новый массив, а добавить один массив в другой. В этом случает один из исходных массивов будет изменен.
Вы наверняка знаете что метод array.push(item) добавляет к имеющемуся массиву новый элемент и ставит его в конец массива.
const students = ['Иванов'];
students.push('Сидоров');
students; // ['Иванов', 'Сидоров'] Благодаря тому факту что array.push(item1, item2, ..., itemN) может принимать множественное количество элементов, мы можем запушить целый массив через оператор spread примененный к аргументу:
array1.push(...array2); И если брать пример с нашими студентами то получим:
const students1 = ['Иванов', 'Сидоров'];
const students2 = ['Петров', 'Курочкина'];
students1.push(...students2);
students1; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина'] А какой из способов используете вы?
