delete arr[0]
Коротка відповідь:
javascript
const arr = [10, 20, 30];
delete arr[0];
console.log(arr); // [ <1 empty item>, 20, 30 ]
console.log(arr.length); // 3Елемент з індексом 0 видалиться,
але його місце залишиться порожнім (empty) - довжина масиву не зміниться.
Що відбувається "під капотом"
deleteвидаляє властивість з об'єкта (а масив - це об'єкт з числовими ключами).- При цьому не зсуває решту елементів і не змінює
length. - У підсумку в масиві з'являється "дірка" - так званий порожній слот.
Демонстрація:
javascript
const arr = [1, 2, 3];
delete arr[1];
console.log(arr); // [1, <1 empty item>, 3]
console.log(arr.length); // 3
console.log(1 in arr); // false - елемента реально немаєЧому це не рекомендується
Такі "порожні комірки" поводяться дивно:
-
forEach,map,filterта інші методи пропускають їх:javascriptarr.forEach(el => console.log(el)); // виведе лише 1 та 3 -
Але при прямому зверненні (
arr[1]) повернеundefined.
Правильний спосіб видалити елемент
Використовуй splice(), якщо потрібно зсунути решту елементів:
javascript
const arr = [10, 20, 30];
arr.splice(0, 1);
console.log(arr); // [20, 30]
console.log(arr.length); // 2Коротко:
| Метод | Що робить | Змінює length | Створює "дірку"? |
|---|---|---|---|
delete arr[i] | видаляє властивість | Ні | Так |
arr.splice(i, 1) | видаляє елемент і зсуває | Так | Ні |
Висновок:
delete arr[index]краще не використовувати для масивів - він залишає "порожні слоти" і робить структуру "рваною". Використовуйsplice()для безпечного видалення.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.