Пустой объект
узнаем - является ли JavaScript объект пустым различными способами
Является ли объект пустым - довольно простая и распространенная задача в JavaScript, имеющая несколько вариантов решения. В этой статье мы рассмотрим наиболее популярные подходы к реализации такой задачи.
Итак, приступим.
Для начала, используя литеральный синтаксис, мы создадим пустой объект:
const obj = {}
После этого попробуем сравнить только что созданный пустой объект obj
с другим пустым объектом, например, так:
console.log(obj === {}) // false
Мы сравнили два пустых объекта и получили false
. Разберемся: с чем это связано? Ведь, фактически, мы выполнили сравнение:
console.log({} === {}) // false
Причина такого результата кроется в том, что, сравнивая объекты, мы сравниваем ссылки, а не значения. Ссылки на сравниваемые объекты не будут идентичны, даже когда содержимое этих объектов будет одинаковым.
Так, как же узнать - является ли объект пустым или нет?
Object.Keys
Object.keys
вернет массив, содержащий имена свойств объекта. Если длина массива будет равнятся 0, объект является пустым.
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
Подобный трюк, можно проделать и с Object.values
или Object.entries
.
Пожалуй, это самый простой способ узнать - является ли объект пустым.
JSON.stringify
Если мы преобразуем объект в строку и получаем только открывающие и закрывающие фигурные скобки, можно смело утверждать, что объект пуст.
function isEmptyObject(obj){
return JSON.stringify(obj) === '{}';
}
Цикл for…in
Можно перебрать свойства объекта с помощью цикла for...in
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
В приведенном выше коде создана функция isEmpty
. Если объект имеет хотя бы одно свойство, он войдет в цикл и вернет false
, в случае, если объект пуст, он вернет true
.
Underscore.js
Узнать, является ли объект пустым, можно и с помощью библиотеки underscore.js.
_.isEmpty(obj);
Функция библиотеки _.isEmpty()
позволяет проверить - является ли сущность пустой: будь то строка, список, массив, объект или что-то иное. Функция определяет длину переданного аргумента и возвращает true
, если аргумент не содержит никаких элементов.
jQuery
С помощью библиотеки jQuery так же можно узнать - явлется ли объект пустым.
jQuery.isEmptyObject(obj);
Спасибо за внимание.
Написано по материалам статьи Arpit Jain “Different ways to check If Object is empty or not”.