Предположим, что я пользовательский разработчик script, и у меня нет контроля над встроенным javascript. Страница создает массивы со случайными длинами, заполняя их случайными значениями (включая фальшивые, например undefined
). Не каждому элементу присваивается значение, поэтому могут быть пустые слоты.
Упрощенный пример (консоль Firefox):
var arr = new Array(3);
arr[0] = null;
arr[1] = undefined;
console.log(arr); \\ Array [ null, undefined, <1 empty slot> ]
console.log(arr[1]); \\ undefined
console.log(arr[2]); \\ undefined
console.log(arr[1] === arr[2]); \\ true
console.log(typeof arr[1]); \\ undefined
console.log(typeof arr[2]); \\ undefined
Как мы видим, Firefox отображает undefined
и пустые слоты по-разному, тогда как для javascript они кажутся одинаковыми.
Теперь предположим, что я хочу очистить такой массив, удалив все пустые слоты, но оставив элементы undefined
неповрежденными. Как это сделать?