从节点 REPL 开始,
> d = {} {} > d === {} false > d == {} false
如果我有一本空字典,那么我如何确保它是一本空字典呢?
Since it has no attributes, a for loop won't have anything to iterate over. To give credit where it's due, I found this suggestion here.
for
function isEmpty(ob){ for(var i in ob){ return false;} return true; } isEmpty({a:1}) // false isEmpty({}) // true
You'd have to check that it was of type 'object' like so:
(typeof(d) === 'object')
And then implement a short 'size' function to check it's empty, as mentioned here.
function isEmpty(obj) { return Object.keys(obj).length === 0; }
You could extend Object.prototype with this isEmpty method to check whether an object has no own properties:
Object.prototype
isEmpty
Object.prototype.isEmpty = function() { for (var prop in this) if (this.hasOwnProperty(prop)) return false; return true; };
If you try this on Node.js use this snippet, based on this code here
Object.defineProperty(Object.prototype, "isEmpty", { enumerable: false, value: function() { for (var prop in this) if (this.hasOwnProperty(prop)) return false; return true; } } );
This is what jQuery uses, works just fine. Though this does require the jQuery script to use isEmptyObject.
isEmptyObject: function( obj ) { for ( var name in obj ) { return false; } return true; } //Example var temp = {}; $.isEmptyObject(temp); // returns True temp ['a'] = 'some data'; $.isEmptyObject(temp); // returns False
If including jQuery is not an option, simply create a separate pure javascript function.
function isEmptyObject( obj ) { for ( var name in obj ) { return false; } return true; } //Example var temp = {}; isEmptyObject(temp); // returns True temp ['b'] = 'some data'; isEmptyObject(temp); // returns False
How about using jQuery?
$.isEmptyObject(d)
I'm far from a JavaScript scholar, but does the following work?
if (Object.getOwnPropertyNames(d).length == 0) { // object is empty }
It has the advantage of being a one line pure function call.
var SomeDictionary = {}; if(jQuery.isEmptyObject(SomeDictionary)) // Write some code for dictionary is empty condition else // Write some code for dictionary not empty condition
This Works fine.
If performance isn't a consideration, this is a simple method that's easy to remember:
JSON.stringify(obj) === '{}'
Obviously you don't want to be stringifying large objects in a loop, though.