Js проверка на пустой объект

Метод 1: Использование метода Object.keys (объект): Требуемый объект может быть передан в метод Object.keys (объект), который будет возвращать ключи в объекте. Свойство length используется в результате для проверки количества ключей. Если свойство length возвращает 0 ключей, это означает, что объект пуст.

Синтаксис:

Пример:

ссылка на сайт
brightness_4
код

Выход:

  • Перед нажатием кнопки:
  • После нажатия на кнопку:

Как правильно проверить в JavaScript, является ли объект пустым, или содержит какие-то свойства?

3 ответа 3

Но к сожелению, Object.keys() доступен не везде (нужно отметить галочку Show obsolete browsers? для того, чтобы увидеть все браузеры), поэтому можно воспользоваться полифилом, либо такой, например, функцией:

Либо так при помощи jQuery, если Вы не изменяли прототип Object :

после запроса AJAX иногда мое приложение может возвращать пустой объект, например:

Как я могу проверить, так ли это?

30 ответов

нет простого способа сделать это. Вам придется явно зацикливаться на свойствах:

Если поддержка ECMAScript 5 можно использовать Object.keys() вместо:

для тех из вас, кто имеет такую же проблему, но использует jQuery, вы можете использовать С помощью jQuery.isEmptyObject.

Это мое предпочтительное решение:

Как насчет использования JSON.преобразовать в строки? Это почти во всех современных браузерах.

старый вопрос, но просто была проблема. Включение JQuery не очень хорошая идея, если ваша единственная цель-проверить, не пуст ли объект. Вместо этого, просто глубоко в код JQuery, и вы получите ответ:

Я только что столкнулся с подобной ситуацией. Я не хотел использовать JQuery и хотел сделать это с помощью чистого Javascript.

и то, что я сделал, использовало следующее условие, и оно сработало для меня.

для не равно, используйте это: JSON.stringify(obj) !== ‘<>’

Читайте также:  Акриловые ванны сантек отзывы

существует простой способ, если вы находитесь в новом браузере. Object.keys(obj).length == 0

Я создал полную функцию, чтобы определить, пуст ли объект.

Он использует Object.keys С ECMAScript 5 (ES5) функциональность, если это возможно для достижения наилучшей производительности (см. таблица совместимости) и обратные пути к наиболее совместимому подходу для старых двигателей (браузеров).

здесь суть для этого кода.

и вот JSFiddle с демонстрацией и простой тест.

Я надеюсь, это поможет кому-то. Ура!

просто обходной путь. Может ли ваш сервер генерировать какое-то специальное свойство в случае отсутствия данных?

затем вы можете легко проверить его в своем коде обратного вызова AJAX.

другой способ проверить это:

редактировать: Если вы используете любую библиотеку JSON (f.e. JSON.js) тогда вы можете попробовать JSON.функция encode () и проверка результата на пустую строку значений.

Использование Объекта.ключи(объект).длина (как предложено выше для ECMA 5+) в 10 раз медленнее для пустых объектов! продолжайте использовать опцию old school (for. in).

протестировано под Node, Chrom, Firefox и IE 9, становится очевидным, что для большинства случаев использования:

    (. в. ) самый быстрый вариант использовать!

вы можете проверить количество ключей объекта:

еще один простой, чистый способ JS:)

Я использую это.

обновление

вы можете использовать реализацию jQuery isEmptyObject

jQuery имеют специальную функцию isEmptyObject() для этого случая:

вы можете использовать этот простой код, не использовать jQuery или других библиотеки

JSON класс и его функции (парсить и преобразовать в строки) очень полезны, но имеют некоторые проблемы с IE7 что вы можете исправить это с помощью этого простого кода http://www.json.org/js.html.

другой простой способ (самый простой способ) :
вы можете использовать этот путь без использования jQuery или JSON

Читайте также:  Как делать превью для видео на youtube

лучший способ, который я нашел:

в следующем примере показано, как проверить, является ли объект JavaScript пустым, если под пустым мы подразумеваем отсутствие собственных свойств.

скрипт работает на ES6.

Если jQuery и веб-браузер недоступны, в подчеркивании также есть функция isEmpty.js.

кроме того, он не предполагает, что входной параметр является объектом. Для списка или строки или undefined он также превратит правильный ответ.

просто, я не думаю, что все браузеры реализуют .

в дополнение к Thevs ответ:

это jquery + jquery.в JSON

нюанс! Остерегайтесь limitiations в JSON,.

сахар.JS предоставляет расширенные объекты для этой цели. Код чистый и простой:

сделать расширенный объекта:

проверьте его размер:

Другой альтернативой является использование есть.js (14kB) в отличие от в jQuery (32 КБ), лодашь (50kB), или подчеркивание (16.4 КБ). есть.js оказалась самой быстрой библиотекой среди вышеупомянутых библиотек, которая может использоваться для определения пустоты объекта.

очевидно, что все эти библиотеки не совсем то же самое, так что если вы нужно легко манипулировать DOM тогда в jQuery все еще может быть хорошим выбором, или если вам нужно больше, чем просто проверка типа потом лодашь или подчеркивание может быть хорошо. Что касается есть.js, вот синтаксис:

как подчеркивание и лодаш _.isObject() , это не только для objects но также относится к arrays и strings .

под капотом эта библиотека использует Object.getOwnPropertyNames что похоже к Object.keys но Object.getOwnPropertyNames является более тщательным, так как он вернет перечисляемые и не перечисляемые свойства, как описано здесь.

если вы не хотите вводить библиотеку (что понятно), и вы знаете, что вы проверяете только объекты (не массивы или строки), то следующая функция должна соответствовать вашим потребностям.

Читайте также:  Base clock offset что это

это только немного быстрее, чем есть.js, хотя только потому, что вы не проверяете, является ли это объект.

Это проверяет, что:

  • объект имеет собственные свойства (независимо от перечисляемость).
  • объект не имеет собственных символов свойств.
  • прототип объекта точно Object.prototype .

другими словами, объект неотличим от объекта, созданного с помощью <> .

Я бы пошел проверить, есть ли у него хотя бы один ключ. Этого достаточно, чтобы понять, что она не пуста.