Как проверить пустой ли объект
Напишите функцию 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
Проверьте, пуст ли объект в JavaScript
В этом посте мы обсудим, как проверить наличие пустого объекта в JavaScript.
Есть несколько способов создать пустой объект в JavaScript, например:
let obj = new Object();
let obj = new Object(undefined);
let obj = new Object(null);
let obj = <>;
Чтобы проверить, пуст ли объект в JavaScript, мы можем использовать любую из следующих функций:
1. Использование Object.entries() функция
The Object.entries() Функция возвращает массив собственных пар свойств [ключ, значение] объекта. Мы также можем проверить длину этого массива, чтобы определить, имеет ли объект какие-либо собственные свойства. Мы можем использовать это как:
Проверка на пустоту значения элемента массива JS
Необходимо проверить, есть ли у элемента какое-нибудь значение, то есть не пустой ли он. Иными словами, если он пустой — выполнять if, я делаю так, не работает.
if (clients[msg[1]] == "")
То есть даже если он пустой — условие не срабатывает.
Отслеживать
задан 6 июн 2019 в 22:21
Максим Закревский Максим Закревский
347 1 1 золотой знак 5 5 серебряных знаков 14 14 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Для начала вам нужно определиться с тем, что вы понимаете под «пустыми элементами».
Посмотрите этот код, в зависимости от того, как мы формулируем условие, пустыми могут быть как falsy-значения так и какие-то конкретные значения.
Чтобы точнее понимать происходящее, изучите сравнение в js
const arr = ['string', 1, undefined, null, 0, '', [], <>, false, true, NaN]; let empty = [] for (let i in arr) < if (!arr[i]) < empty.push(`$("$")`) > > console.log(empty.join(", "))
Получим undefined / null -значения:
const arr = ['string', 1, undefined, null, 0, '', [], <>, false, true, NaN]; let empty = [] for (let i in arr) < if (arr[i] == undefined) < empty.push(`$("$")`) > > console.log(empty.join(", "))
Получим undefined -значения:
const arr = ['string', 1, undefined, null, 0, '', [], <>, false, true, NaN]; let empty = [] for (let i in arr) < if (arr[i] === undefined) < empty.push(`$("$")`) > > console.log(empty.join(", "))
Получим null -значения:
const arr = ['string', 1, undefined, null, 0, '', [], <>, false, true, NaN]; let empty = [] for (let i in arr) < if (arr[i] === null) < empty.push(`$("$")`) > > console.log(empty.join(", "))
Ищем пустые строки, но снова получим falsy -значения (некоторые). При этом значения undefined / null / NaN уже не попадут в выборку:
const arr = ['string', 1, undefined, null, 0, '', [], <>, false, true, NaN]; let empty = [] for (let i in arr) < if (arr[i] == "") < empty.push(`$("$")`) > > console.log(empty.join(", "))
Получим только пустые строки:
const arr = ['string', 1, undefined, null, 0, '', [], <>, false, true, NaN]; let empty = [] for (let i in arr) < if (arr[i] === "") < empty.push(`$("$")`) > > console.log(empty.join(", "))