Как узнать, есть ли неопределённые элементы в массиве?
У нас есть массив:
var massiv = [1,,2,3]

Мы видим, что значения элемента под индексом 1 не существует. То есть значение этого элемента не было объявлено. Если мы попытаемся обратиться к значению элемента массива под индексом 1, то мы получим undefined

Мы хотим понять, пропущен ли в оригинальном массиве какой-нибудь элемент или нет? Это полный массив или не полный? Как это сделать?
Решение
Можно взять метод filter() для объектов-прототипов Array и отобрать значения, которые не равны undefined. А затем нужно просто сравнить длины двух массивов.
- Если длины разные, значит в массиве есть дырка.
- Если длины совпадают, значит массив полный и дырок в нём нет.
massiv.filter(i=>i!=undefined).length == massiv.length false

В нашем случае выражение вернуло false, а значит длины не совпадают и в массиве есть неопределённые элементы. Задача выполнена.
Информация из стандарта ECMAScript
Элементы массива могут быть опущены в начале, середине или конце списка элементов. Каждый раз, когда запятой в списке элементов не предшествует AssignmentExpression (т.е. запятая в начале или после другой запятой), отсутствующий элемент массива способствует увеличению длины массива и увеличивает индекс последующих элементов. Исключаемые элементы массива не определены (not defined). Если элемент опущен в конце массива, этот элемент не влияет на длину массива.
Информационные ссылки
JavaScript | empty элемент массива
Стандарт ECMAScript — Раздел «13.2.5 Array Initializer» — https://tc39.es/ecma262/#sec-array-initializer