JavaScript | Как узнать длину массива без пустых элементов? — efim360.ru

JavaScript | Как узнать длину массива без пустых элементов?

Есть массив с пустыми элементами (empty):

var massiv = [1,,2,,,3,,,,4]
Массив с пустыми элементами - JavaScript
Массив с пустыми элементами - JavaScript

Задача

Мы хотим узнать длину этого массива без пустых элементов.

В чём проблема?

У любого массива в JavaScript есть свойство "length". Мы всегда можем обратиться к этому свойству и узнать длину массива. Давайте так и сделаем:

massiv.length

В ответ получим число 10.

Длина массива с пустыми элементами - JavaScript
Длина массива с пустыми элементами - JavaScript

Но это число не соответствует реальности т. к. "живых" элементов в массиве всего 4. Как быть?

 

Решение

Мы должны произвести фильтрацию оригинального массива по условию, что значение элемента массива не определено - является undefined.

i != undefined

Вызываем метод filter() с этим условием:

massiv.filter(i => i != undefined)

Фильтр пробежится по всем элементам массива и вернёт только те, которые определены.

Отобрали существующие элементы из массива - JavaScript
Отобрали существующие элементы из массива - JavaScript

Новый массив будет полностью заполнен элементами от начала до конца. У нового массива можно узнать длину.

massiv.filter(i => i != undefined).length
Длина отфильтрованного массива - JavaScript
Длина отфильтрованного массива - JavaScript

Получим длину 4. Эта длина как раз и будет количеством "живых" элементов в массиве.

 

Информационные ссылки

JavaScript | Массивы (Array)

Стандарт ECMAScript - Раздел "23.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )" - https://tc39.es/ecma262/#sec-array.prototype.filter

Поделись записью