push() vs concat()
Методи push() і concat() справді схожі - обидва додають елементи в масив,
але роблять це зовсім по-різному.
1. push() - змінює (мутує) вихідний масив
javascript
const arr = [1, 2];
arr.push(3);
console.log(arr); // [1, 2, 3]- Додає елемент(и) в кінець вихідного масиву.
- Змінює (мутує) вихідний масив.
- Повертає нову довжину масиву, а не сам масив.
javascript
const len = arr.push(4, 5);
console.log(len); // 5
console.log(arr); // [1, 2, 3, 4, 5]2. concat() - створює новий масив (не мутує)
javascript
const arr = [1, 2];
const newArr = arr.concat(3);
console.log(arr); // [1, 2] - вихідний не змінився
console.log(newArr); // [1, 2, 3]-
Не змінює вихідний масив.
-
Повертає новий масив.
-
Можна об'єднувати кілька масивів або окремі значення:
javascriptconst a = [1, 2]; const b = [3, 4]; const c = a.concat(b, 5, [6, 7]); console.log(c); // [1, 2, 3, 4, 5, 6, 7]
Порівняння поведінки
| Властивість | push() | concat() |
|---|---|---|
| Змінює вихідний масив | Так | Ні |
| Повертає | Нову довжину | Новий масив |
| Приймає | Один або декілька елементів | Масиви та/або елементи |
| Створює копію | Ні | Так |
| Мутація | Так | Ні |
| Типова задача | Додати елемент до наявного масиву | Об'єднати масиви |
Приклад різниці:
javascript
const arr = [1, 2];
const arr2 = [3, 4];
// push()
arr.push(...arr2);
console.log(arr); // [1, 2, 3, 4] (масив змінився)
// concat()
const combined = arr.concat(arr2);
console.log(combined); // [1, 2, 3, 4]
console.log(arr); // [1, 2] (вихідний не зачеплено)Коротко:
| Характеристика | push() | concat() |
|---|---|---|
| Мутує масив | Так | Ні |
| Повертає | число (length) | новий масив |
| Додає в кінець | Так | Так |
| Можна додати інший масив | Так (через ...spread) | Так, напряму |
| Використовувати при | зміні поточного масиву | створенні нового |
Висновок:
- Якщо потрібно змінити поточний масив - використовуй
push().- Якщо потрібно створити новий, не чіпаючи старий - використовуй
concat().
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.