"1 empty item" в массиве javascript

Код:

let a = ["1"];
let b = [];

delete a[0];

console.log(a);
console.log(b);
console.log(a.length);
console.log(b.length);
console.log(typeof a[0]);
console.log(typeof b[0]);

Вывод:

[ <1 empty item> ]
[]
1
0
undefined
undefined

Что такое <1 empty item>? И почему длинна 1?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Значение из ячейки было удалено, но место под другое значение осталось.

Оператор delete удаляет свойство объекта. Для массива - это индекс. Сам элемент не удаляется

В итоге получается разряженный массив (sparse) (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas#trailing_commas_in_literals)

Тоже самое получается при висячих запятых

[0, 1, null, 2, "", 3, undefined, 3,,,,,, 4,, 4,, 5,, 6,,,,];

→ Ссылка