Метод объединения массивов Javascript

Метод объединения массивов Javascript

15 ноября 2022 г.

Метод concat для массивов используется для объединения двух массивов в один. Он принимает столько массивов, сколько вам нужно, поэтому вы можете объединить множество массивов одновременно:

Array.concat(value1, value2, value3, ...valueN)

Каждый элемент, добавляемый в метод concat, должен иметь тип массива. Давайте рассмотрим простой пример. Ниже мы объединяем два массива:

let myArray = [ 1, 2, 3, 4, 5 ];
let newArray = [ 'n', 'a', 'e', 'k' ] 

let mergedArray = myArray.concat(newArray);

console.log(mergedArray); // [ 1, 2, 3, 4, 5, 'n', 'a', 'e', 'k' ]

concat не удаляет дубликаты, но если вас интересует структура данных, которая удаляет дубликаты, вы возможно, вы захотите прочитать мое руководство по наборам Javascript.

Метод concat создает поверхностную копию массива, к которому он применяется, с добавлением любых других массивов в конец.

Это означает, что хотя кажется, что новый массив создан, он все еще имеет связь с исходным массивом, который вы изменили. На самом деле каждый массив, который вы упоминаете в concat, является неполной копией оригинала. Рассмотрим следующий пример:

let myArray = [ { name: "John" }, 1, 2, 3, 4, 5 ];
let newArray = [ { name: "Jacob" }, 'a', 'e', 'k' ] 

let mergedArray = myArray.concat(newArray);

myArray[0].name = "Jingleheimer";
newArray[0].name = "Schmidt";
newArray[1] = 5;
console.log(mergedArray, myArray); // [ { name: "Jingleheimer" }, 1, 2, 3, 4, 5, { name: "JSchmidtacob" }, 'a', 'e', 'k' ]

Можно было бы ожидать, что изменение name в myArray и newArray не повлияет на mergedArray, но оно влияет. Однако newArray[1] = 5 не влияет на mergedArray.

Основная предпосылка заключается в том, что массивы, которые мы использовали в concat, сохраняют в памяти ту же ссылку, что и исходные массивы. Обновление name обновляет как mergedArray, так и исходные массивы, поскольку все они хранятся в одном месте. Однако ввод newArray[1] указывает Javascript поместить совершенно новое значение в позицию [1] `mergedArray.

Это важно помнить, когда вы сталкиваетесь со странными ошибками массива Javascript.

## Объединение нескольких массивов. Мы рассмотрели, как можно объединить два массива, но объединение большего числа массивов работает почти так же. Вы перечисляете все свои массивы в функции concat следующим образом:

let myArray = [ 1, 2, 3, 4, 5 ];
let newArray = [ 'n', 'a', 'e', 'k' ] 
let anotherArray = [ 7, 1, 5, 7 ] 

let mergedArray = myArray.concat(newArray, anotherArray);

console.log(mergedArray); // [ 1, 2, 3, 4, 5, 'n', 'a', 'e', 'k', 7, 1, 5, 7 ]

Массивы объединяются в порядке их упоминания.

## Объединение вложенных массивов. Таким же образом объединяются вложенные массивы. Внешний массив удаляется, а это означает, что вложенные элементы становятся частью первого массива:

let myArray = [ [1, [2, 3], 4], 5 ];
let newArray = [ ['n', 'a'], 'e', 'k' ] 

let mergedArray = myArray.concat(newArray);

console.log(mergedArray); // [ [1, [2, 3], 4], 57, ['n', 'a'], 'e', 'k' ]

## Значения в связанных массивах Если вы передаете простое значение в concat, оно будет рассматриваться как элемент массива. Это означает, что если вы передадите 'value', а не ['value'], это все равно приведет к ['value']:

let myArray = [ 1, 2, 3, 4, 5 ];

let mergedArray = myArray.concat(1, 2, 3);

console.log(mergedArray); // [ 1, 2, 3, 4, 5, 1, 2, 3 ]

Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE