Get Object Size

As in, the number of keys.

function objectSize(the_object) {
  /* function to validate the existence of each key in the object to get the number of valid keys. */
  var object_size = 0;
  for (key in the_object){
    if (the_object.hasOwnProperty(key)) {
      object_size++;
    }
  }
  return object_size;
}

Usage

// Arbitrary object
var something = {
  dog: "cat",
  cat: "dog"
}

console.log(objectSize(something));
// Logs: 2

Comments

  1. User Avatar
    code200
    Permalink to comment#

    Be sure to add var in front of key in your loop:

    for (var key in the_object){

    so the variable key goes out of scope with the function.

    Most recent browsers support this shorter version:
    Object.keys(something).length;
    
  2. User Avatar
    Dwight Vietzke
    Permalink to comment#

    Just ran across this post while debugging code for IE. IE versions before 9 seem to have a problem with Object.keys and .hasOwnProperty used directly on an object. So a more sophisticated replacement is necessary, which can be found here:

    http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation

    Hope this helps.

  3. User Avatar
    Sam Purcell
    Permalink to comment#

    I like this Chris, but it seems more correct to add it to the Object prototype. IE

    Object.prototype.size = function() {
    var size = 0
    // your code, but using "this"

    return size;
    }
    Called with something.size()

    From what I understand, adding a new function to the object prototype should not be a problem.

    • User Avatar
      Michael Caputo
      Permalink to comment#

      Hey Sam, could you write out your suggestion? I’m a bit confused by this.

      Thanks for the help.

Submit a Comment

Posting Code

You may write comments in Markdown. This makes code easy to post, as you can write inline code like `<div>this</div>` or multiline blocks of code in triple backtick fences (```) with double new lines before and after.

Code of Conduct

Absolutely anyone is welcome to submit a comment here. But not all comments will be posted. Think of it like writing a letter to the editor. All submitted comments will be read, but not all published. Published comments will be on-topic, helpful, and further the discussion or debate.

Want to tell us something privately?

Feel free to use our contact form. That's a great place to let us know about typos or anything off-topic.

icon-closeicon-emailicon-linkicon-logo-staricon-menuicon-searchicon-staricon-tag