Що робить copyWithin()?
метод copyWithin() - один з найбільш "недооцінених", але потужних інструментів для роботи з масивами у JavaScript.
Він дозволяє скопіювати частину елементів масиву в інше місце всередині цього ж масиву, не змінюючи його довжину.
Синтаксис:
javascript
arr.copyWithin(target, start, end);| Параметр | Опис |
|---|---|
target | Індекс, куди будуть скопійовані елементи |
start | Індекс, звідки почати копіювання (включно) |
end | Індекс, де закінчити (не включаючи цей індекс). Необов'язково. Якщо не вказати - копіює до кінця масиву |
Приклад 1 - базовий
javascript
const arr = [1, 2, 3, 4, 5];
arr.copyWithin(0, 3);
console.log(arr); // [4, 5, 3, 4, 5]Розшифровка:
target = 0→ вставляємо з позиції 0start = 3→ починаємо копіювати з індексу 3- копіюємо
[4, 5] - результат:
[4, 5, 3, 4, 5]
Приклад 2 - з start і end
javascript
const arr = [1, 2, 3, 4, 5];
arr.copyWithin(1, 3, 5);
console.log(arr); // [1, 4, 5, 4, 5]- Копіюємо елементи
[4, 5](від 3 до 5, не включаючи 5) - Вставляємо з позиції
1
Приклад 3 - від'ємні індекси
javascript
const arr = [10, 20, 30, 40, 50];
arr.copyWithin(-2, 0, 2);
console.log(arr); // [10, 20, 30, 10, 20]-2→ означає "вставити починаючи з другого елемента з кінця"- копіюємо
[10, 20]і вставляємо в кінець.
Особливості поведінки
| Властивість | Опис |
|---|---|
| Мутує масив | Так |
| Повертає | Змінений масив |
| Довжина масиву | Не змінюється |
| Копіює всередині масиву | Так |
| Значення, що повертається | Посилання на той самий масив (this) |
Приклад практичного застосування:
Можна використовувати для "зсуву" значень всередині масиву без створення нового:
javascript
const buffer = [1, 2, 3, 4, 5];
buffer.copyWithin(1, 0, 3);
console.log(buffer); // [1, 1, 2, 3, 5]Коротко:
| Що робить | Копіює частину масиву в інше місце всередині нього |
|---|---|
| Змінює вихідний масив | Так |
| Повертає | Сам масив |
| Не змінює довжину | Так |
| Приклад | [1,2,3,4,5].copyWithin(0,3) → [4,5,3,4,5] |
Підсумок:
copyWithin()- це спосіб перемістити або дублювати елементи всередині масиву без створення нового масиву і без зміни довжини.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.