Skip to main content

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 та інші методи пропускають їх:

    javascript
    arr.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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.