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

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

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

http://jsperf.com/check-empty-object-using-libraries

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

 var a = {}; is.empty(a); // true is.empty({"hello": "world"}) // false 

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

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

 is.empty = function(value) { if(is.object(value)){ var num = Object.getOwnPropertyNames(value).length; if(num === 0 || (num === 1 {amp}amp;{amp}amp; is.array(value)) || (num === 2 {amp}amp;{amp}amp; is.arguments(value))){ return true; } return false; } else { return value === ''; } }; 

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

 function isEmptyObject( obj ) { return Object.getOwnPropertyNames(obj).length === 0; } 

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

§

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

он вернет true если по умолчанию вводится значение false или если это пустой объект или массив. обратная функция trueish

http://codepen.io/synthet1c/pen/pjmoWL

 function falsish( obj ){ if( (typeof obj === 'number' {amp}amp;{amp}amp; obj {amp}gt; 0) || obj === true ){ return false; } return !!obj ? !Object.keys( obj ).length : true; } function trueish( obj ){ return !falsish( obj ); } falsish({}) //={amp}gt; true falsish({foo:'bar'}) //={amp}gt; false falsish([]) //={amp}gt; true falsish(['foo']) //={amp}gt; false falsish(false) //={amp}gt; true falsish(true) //={amp}gt; false // the rest are on codepen 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector