Как проверить объект на пустоту js
Напишите функцию isEmpty(obj) , которая возвращает true , если у объекта нет свойств, иначе false .
Должно работать так:
let schedule = <>; alert( isEmpty(schedule) ); // true schedule["8:30"] = "get up"; alert( isEmpty(schedule) ); // false
Просто в цикле перебираем свойства объекта и возвращаем false , как только встречаем свойство.
function isEmpty(obj) < for (let key in obj) < // если тело цикла начнет выполняться - значит в объекте есть свойства return false; >return true; >
Методы объектов JS: Как проверить объект JavaScript на пустоту?
Проверить является ли объект пустым – одна из постоянно встречающихся задач в повседневной жизни Javascript разработчика.
Например, работая над очередной фичей в React приложении, требовалось делать активной кнопку “Подтвердить” только в том случае, когда объект const order = <> содержал свойства, то есть не был пустым.
В случае если бы переменная order содержала массив, то все было бы просто:
1const order = [];2 const emptyOrder = !order.length;3 // true45 button disabled=emptyOrder>>Подтвердить/button>;
Рассмотрим 4 метода объектов js, которые помогут проверить объект на пустоту.
1. Object.keys()
Первый способ — использовать метод Object.keys() для получения нового массива из ключей (свойств) объекта. Если свойства отсутствуют, то новый массив будет пустой.
1const order = >;2 const emptyOrder = !Object.keys(order).length;3 // true
Тоже самое можно записать так:
1const emptyOrder = Object.keys(order).length === 0;2 // true
Далее прописываем переменную для свойства disabled нашей кнопки (делаем ее неактивной):
1button disabled=emptyOrder>>Подтвердить/button>
2. JSON.stringify()
Второй способ проверить объект на пустоту — использовать метод JSON.stringify() , чтобы перевести наш объект в строчный формат и сравнить результат со строкой ‘<>‘ .
1const order = >;2 const emptyOrder = JSON.stringify(order) === '<>';3 // true
Добавляем наше условие:
1button disabled=emptyOrder>>Подтвердить/button>
3. Цикл for..in
Данный способ интересен тем, что его поддерживают более старые версии браузеров. Ознакомиться с текущим состоянием браузерной совместимости цикла for..in можно здесь ).
Давайте создадим функцию, которая принимает на вход объект и использует цикл for..in , чтобы пробежаться по ключам объекта. Далее используем метод object.hasOwnProperty() для проверки наличия ключа.
Функция возвращает true , в случае если ключи отсутствуют. Мы получим значение false , если в объекте присутствует хотя бы один ключ.
1const order = >;23 function isEmptyObj(object)4 for (let key in object)5 if (object.hasOwnProperty(key))6 return false;7 >8 >9 return true;10 >1112 console.log(isEmptyObj(order));13 // true
4. isEmpty (метод в библиотеке Lodash)
В библиотеке Lodash есть специальный метод, который принимает на вход как массивы так и объекты:
1_.isEmpty([1, 2, 3]);2 // false3_.isEmpty( a: 1 >);4 // false
Методы массивов JavaScript (11 методов)
Переменные JavaScript var, let и const (в чем отличие и когда использовать)?
Популярные статьи
- Задачи JavaScript для начинающих
- Типы данных в JavaScript
- Как проверить объект JavaScript на пустоту?
- Обработчики Событий в JS
- Деструктуризация в Javascript
- Массивы Javascript: перебирающие методы
- Операторы Spread и Rest в Javascript
- Объект Date: Текущая Дата и Время в Javascript
- Переменные JavaScript var, let и const
js проверить что объект не пустой
Чтобы проверить, что объект не является пустым, можно с помощью метода Object.keys() получить массив ключей этого объекта, а потом сравнить длину массива с нулём.
const notEmptyObject = 1: 'a', 2: 'b', 3: 'c', >; const emptyObject = <>; console.log(Object.keys(notEmptyObject).length !== 0) // => true (объект не пустой) console.log(Object.keys(emptyObject).length !== 0) // => false (объект пустой)
Как проверить что объект <> не пустой?
Как правильно проверить в JavaScript, является ли объект пустым, или содержит какие-то свойства?
Отслеживать
Robert Key
задан 1 окт 2015 в 7:09
Robert Key Robert Key
656 1 1 золотой знак 4 4 серебряных знака 22 22 бронзовых знака
Что значит «пустой»?
– user177221
1 окт 2015 в 7:12
var object = <>
1 окт 2015 в 7:14
@IonDen спасибо за правки )
1 окт 2015 в 8:50
Загляните в библиотеку lodash, функция _.isEmpty. А вот как она реализована
12 июн 2018 в 8:09
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
if (Object.keys(obj).length == 0)
Но к сожелению, Object.keys() доступен не везде (нужно отметить галочку Show obsolete browsers? для того, чтобы увидеть все браузеры), поэтому можно воспользоваться полифилом, либо такой, например, функцией:
function isEmptyObject(obj) < for (var i in obj) < if (obj.hasOwnProperty(i)) < return false; >> return true; >
Либо так при помощи jQuery, если Вы не изменяли прототип Object :
if ($.isEmptyObject(<>);)
