JavaScript | Как получить ключи объекта, где в значениях не null?

JavaScript | Как получить ключи объекта, где в значениях не null?

У нас есть объект с тремя свойствами, где одно свойство имеет значение null:

 

let obj = {qwe:1, asd:null, zxc:3};

 

 

Ключ с именем «asd» имеет значение null. В нашей задаче ключ «asd» не интересен и мы хотели бы его выбросить из итоговой обработки объекта.

 

Для начала мы получаем записи самого объекта в виде массивных пар (массив из массивов). Для этого мы используем встроенный в JavaScript конструктор класса Object, в котором есть свой собственный метод entries().

 

Object.entries(obj)

 

Когда у нас есть массив из всех возможных пар «ключ/значение«, тогда можно приступать к фильтрации. Мы используем метод filter(), который наследуется всеми экземплярами Array. Внутри функции обработчика мы сравниваем второй элемент массивной пары со значением null.

В качестве оператора сравнения мы используем оператор «не равно«.

Метод filter() будет ходить па каждой массивной паре и отбрасывать те пары, в которых второй элемент (под индексом один) равен null. В итоге мы получим новый массив.

 

Object.entries(obj).filter(i=>i[1]!=null)

 

 

Теперь нам останется вытащить из массивных пар только первые элементы на один уровень нового массива. Извлечение элементов будем осуществлять методом map(), который наследуется всеми экземплярами Array.

 

Object.entries(obj).filter(i=>i[1]!=null).map(i=>i[0])

 

 

По итогу мы получим массив из двух строк:

['qwe', 'zxc']

Это будут имена ключей объекта, в которых значения не равны null.

Теперь можно спокойно писать другую логику для работы с объектом и не учитывать ключи со свойством с null.

 

Итоговый результат пошаговых преобразований

Получили имена ключей объекта, где в значениях не null - JavaScript
Получили имена ключей объекта, где в значениях не null — JavaScript

 

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

Стандарт ECMAScript — Раздел «Object.entries ( O )» — https://tc39.es/ecma262/#sec-object.entries

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

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

Стандарт ECMAScript — Раздел «Equality Operators» — https://tc39.es/ecma262/#sec-equality-operators