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!

Links

jQuery.isEmptyObject

hasOwnProperty documentation

JQuery JavaScript Library

2 Responses to “How to test for an empty javascript object”