Метод объединения массивов 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 ]
Также опубликовано здесь
Оригинал