JS метод Array.concat()


Опис

Метод concat формує новий масив. Початково, цей масив заповнюється елементами об'єкта, на якому було викликано concat. Наступно, елементи кожного переданого аргументу додаються до цього масиву. Для базових об'єктів та примітивів сам аргумент додається як елемент цільового масиву. Тоді як для масивів або об'єктів, що мають властивість Symbol.isConcatSpreadable з істинним значенням, всі їхні елементи додаватимуться окремо до кінцевого масиву. Важливо зазначити, що метод concat не обробляє масиви рекурсивно.

Метод concat створює поверхневу копію. Він не модифікує ні сам первісний об'єкт (this), ні масиви, передані йому як аргументи. Замість цього, метод повертає новий масив, який містить елементи з усіх вхідних масивів.

Якщо деякі комірки в оригінальних масивах порожні, метод concat збереже ці порожні позиції в результуючому масиві.

Метод concat розглядає значення this таким же чином, як і всі інші аргументи (за виключенням того, що спочатку воно конвертується в об'єкт). Так, прості об'єкти будуть розміщені на початку кінцевого масиву, тоді як масивоподібні з властивістю @@isConcatSpreadable з істинним значенням будуть розширені у цільовий масив.

автор: Bond

Нотатка

Помітною перевагою використання методу concat() є те, що він не змінює вихідні масиви, а створює новий масив. Тому ви можете безпечно використовувати його безпосередньо на початкових масивах без ризику їх змінити.

автор: Bond
Нотатка

Метод concat() також дозволяє об'єднувати не тільки масиви, але й інші значення, такі як рядки або числа. Вони будуть додані до створеного масиву як окремі елементи.

автор: Bond

Синтаксис

concat()
concat(value0)
concat(value0, value1)
concat(value0, value1, /* … ,*/ valueN)

Параметри

valueN

Масиви та/або значення для об'єднання в новий масив. Якщо ж параметри valueN відсутні, метод concat просто поверне поверхневу копію того масиву, з яким він працює.

автор: Bond

Повернення

instance

Новий екземпляр масиву.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1 1 4 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

З'єднання двох масивів

const letters = ["a", "b", "c"];
const numbers = [1, 2, 3];

const alphaNumeric = letters.concat(numbers);
console.log(alphaNumeric);
// результат: ['a', 'b', 'c', 1, 2, 3]
автор: Bond

З'єднання трьох масивів

const num1 = [1, 2, 3];
const num2 = [4, 5, 6];
const num3 = [7, 8, 9];

const numbers = num1.concat(num2, num3);

console.log(numbers);
// результат: [1, 2, 3, 4, 5, 6, 7, 8, 9]
автор: Bond

Даний приклад демонструє використання методу concat() для з'єднання двох масивів. В прикладі створюються масиви array1 та array2, після чого за допомогою методу concat() їх елементи з'єднуються у новий масив array3. Результат з'єднання виводиться на сторінку.

автор: Bond

Якщо будь-який з початкових масивів є розрідженим, то результуючий масив також буде розрідженим.

console.log([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5]
console.log([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5]
автор: Bond

Якщо значення this не є масивом, воно перетворюється на об'єкт і потім обробляється так само, як аргументи для concat(). У цьому випадку, результатом завжди буде новий масив.

console.log(Array.prototype.concat.call({}, 1, 2, 3)); // [{}, 1, 2, 3]
console.log(Array.prototype.concat.call(1, 2, 3)); // [ [Number: 1], 2, 3 ]
const arrayLike = {
  [Symbol.isConcatSpreadable]: true,
  length: 2,
  0: 1,
  1: 2,
  2: 99, // ігнорується concat(), оскільки length дорівнює 2
};
console.log(Array.prototype.concat.call(arrayLike, 3, 4)); // [1, 2, 3, 4]
автор: Bond

Код з'єднує три значення з масивом.

const letters = ["a", "b", "c"];

const alphaNumeric = letters.concat(1, [2, 3]);

console.log(alphaNumeric);
// результат: ['a', 'b', 'c', 1, 2, 3]
автор: Bond

Код з'єднує вкладені масиви і демонструє збереження посилань.

const num1 = [[1]];
const num2 = [2, [3]];

const numbers = num1.concat(num2);

console.log(numbers);
// результат: [[1], 2, [3]]

// зміна першого елемента num1
num1[0].push(4);

console.log(numbers);
// результат: [[1, 4], 2, [3]]
автор: Bond

Метод concat за замовчуванням не розглядає всі об'єкти, які схожі на масиви, як масиви - це стосується лише тих, де властивість Symbol.isConcatSpreadable встановлена на значення істинності (наприклад, true).

const obj1 = { 0: 1, 1: 2, 2: 3, length: 3 };
const obj2 = { 0: 1, 1: 2, 2: 3, length: 3, [Symbol.isConcatSpreadable]: true };
console.log([0].concat(obj1, obj2));
// [ 0, { '0': 1, '1': 2, '2': 3, length: 3 }, 1, 2, 3 ]
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід