Array.prototype.concat()

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

Синтаксис

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

Параметри

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

Повернене значення

Новий екземпляр об'єкта Array.

Опис

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

Метод concat не змінює this або будь-який з масивів, що передані як аргументи, але натомість повертає дрібну копію, яка містить копії тих самих елементів, об'єднані з початкових масивів. Елементи початкових масивів копіюються в новий масив таким чином:

  • Посилання на об'єкти (а не самі об'єкти): concat копіює посилання на об'єкти у новий масив. І початковий, і новий масиви посилаються на той самий об'єкт. Іншими словами, якщо об'єкт, на який посилаються, буде змінено, то зміни будуть видимими для нового та початкового масивів. Це стосується також тих елементів аргументів масиву, які також є масивами.
  • Рядки, числа та булеві значення (не об'єкти String, Number, та Boolean): concat копіює значення рядків та чисел у новий масив.

Примітка: об'єднання масиву (масивів) чи значення (значень) не змінить початкові дані. Більше того, будь-яка операція над новим масивом (тільки якщо елемент не є посиланням на об'єкт) не матиме жодного впливу на початкові масиви, і навпаки.

Приклади

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

Наступний код об'єднує два масиви:

const letters = ['a', 'b', 'c'],
const numeric = [1, 2, 3];

letters.concat(numeric);
// Результат: ['a', 'b', 'c', 1, 2, 3]

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

Наступний код об'єднує три масиви:

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

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

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

Об'єднання значень у масив

Наступний код об'єднує три значення у масив:

var letters = ['a', 'b', 'c'];

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

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

Об'єднанная вкладених масивів

Наступний код об'єднує вкладені масиви та демонструє утримання посилань:

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]]

Специфікації

Специфікація Статус Коментар
ECMAScript 3rd Edition (ECMA-262) Standard Початкове визначення. Реалізоване в JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
The definition of 'Array.prototype.concat' in that specification.
Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.concat' in that specification.
Standard
ECMAScript Latest Draft (ECMA-262)
The definition of 'Array.prototype.concat' in that specification.
Draft

Сумісність із веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
concatChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5.5Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також

  • push / pop — додавання/видалення елементів із кінця масиву
  • unshift / shift — додавання/видалення елементів із початку масиву
  • splice — додавання/видалення елементів із зазначеного місця масиву
  • String.prototype.concat()
  • Symbol.isConcatSpreadable – налаштування вирівнювання