Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS метод Array.concat()

Опис

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

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

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

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

Нотатка:

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

Нотатка:

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

Синтаксис

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

Параметри

*valueN

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

Return

instance

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

Переглядачі

Переглядач

1

1

1

4

12

Переглядач

4.4

18

4

1

Переглядач

0.10.0

1.0

Приклади


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

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

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

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

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

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]

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

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

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

Метод 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 ]

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

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

Якщо значення 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]