How to test for an empty javascript object
Hi everybody! I’ve just had a discussion of how to test for an emtpy javascript object. As a result, I have several code snippets and I want to share them.
Problem
1 2 3 4 5 6 7 |
alert({} == null); // false alert({} == {}); // false alert({} == {}); // false alert({} == 0); // false alert({} == ""); // false alert({} == []); // false // etc :) |
So, none of the expressions above can check for an empty javascript object.
Pure javascript solution
1 2 3 4 5 6 7 |
function empty(o) { for(var i in o) if(o.hasOwnProperty(i)) return false; return true; } |
object.hasOwnProperty(property) |
Returns a boolean indicating whether the object has the specified property. This method does not check down the object’s prototype chain.
Learn details of hasOwnProperty here at developer.mozilla.org. |
---|
JQuery + JQuery.JSON solution
1 2 3 4 5 |
var o = {}; alert($.toJSON(o) == '{}'); // true var o = {a: 1}; alert($.toJSON(o) == '{}'); // false |
The code above simply converts an object to JSON string.
UPDATE: jQuery.isEmptyObject method
As of jQuery 1.4, there’s isEmptyObject
method to detect is the object empty. Look at the followtin code for example:
1 2 |
$.isEmptyObject({}); // true $.isEmptyObject({someprop: "true"}); // false |
Your way
Well, if you have your way of checking for an empty javascript object I am waiting your comments! Thanks in advance!
From jQuery 1.4 there is jQuery.isEmptyObject.
Jakub Jankiewicz, thanks for your comment!
Here’s the link for this method on jquery api http://api.jquery.com/jQuery.isEmptyObject/.