JavaScript | Как проверить объект на пустоту? — efim360.ru

JavaScript | Как проверить объект на пустоту?

Есть два объекта:

let obj1 = {a:1};
let obj2 = {};

Мы хотим проверить эти объекты на пустоту. Как это сделать?

Два объекта JavaScript - полный и пустой
Два объекта JavaScript — полный и пустой

 

Как проверить, что объект пустой и у него нет свойств?

Под словом «пустой» мы подразумеваем такой объект, в котором нет ключей и значений — то есть нет свойств.

Сделать такую проверку можно через метод конструктора класса Object, который называется getOwnPropertyNames(). Этот метод всегда принимает только один параметр — какой-то объект. Возвращает массив из названий ключей, которые принадлежат только этому объекту. Метод не ныряет в наследственные свойства своих прототипов, а ограничивается только собственным уровнем.

Стало быть, если мы получим массив длиной ноль, то это значит, что у нашего объекта нет никаких ключей и такой объект можно назвать пустым.

Object.getOwnPropertyNames(obj1)
['a']

Object.getOwnPropertyNames(obj2)
[]

Данные выражения возвращают массивы.

Получили массивы с именами ключей собственных свойств объекта в JavaScript
Получили массивы с именами ключей собственных свойств объекта в JavaScript

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

Object.getOwnPropertyNames(obj1).length
1

Object.getOwnPropertyNames(obj2).length
0

В случае с первым объектом получаем массив длиной 1. А в случае со вторым объектом получаем массив длиной 0.

Получили длины массивов с именами ключей собственных свойств объекта в JavaScript для полного и пустого
Получили длины массивов с именами ключей собственных свойств объекта в JavaScript для полного и пустого

 

Функция проверки объекта на пустоту

Значения длин можно сразу вносить в оператор ветвления — IF. Для этого нужно создать функцию.

function isEmptyObj(obj){
   if(Object.getOwnPropertyNames(obj).length){return false}
   else{return true}
};

Пример работы функции:

Проверили два объекта на пустоту в JavaScript
Проверили два объекта на пустоту в JavaScript

Вызов нашей функции isEmptyObj() для первого объекта вернёт логический тип со значением false. Для второго объекта — true.

 

 

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

Стандарт ECMAScripthttps://tc39.es/ecma262/multipage/https://tc39.es/ecma262/

Раздел «Object.getOwnPropertyNames( O )» — https://tc39.es/ecma262/#sec-object.getownpropertynames