How to efficiently count the number of keys/properties of an object in JavaScript How to efficiently count the number of keys/properties of an object in JavaScript javascript javascript

How to efficiently count the number of keys/properties of an object in JavaScript


To do this in any ES5-compatible environment, such as Node.js, Chrome, Internet Explorer 9+, Firefox 4+, or Safari 5+:

Object.keys(obj).length


You could use this code:

if (!Object.keys) {    Object.keys = function (obj) {        var keys = [],            k;        for (k in obj) {            if (Object.prototype.hasOwnProperty.call(obj, k)) {                keys.push(k);            }        }        return keys;    };}

Then you can use this in older browsers as well:

var len = Object.keys(obj).length;


If you are using Underscore.js you can use _.size (thanks douwe):

_.size(obj)

Alternatively you can also use _.keys which might be clearer for some:

_.keys(obj).length

I highly recommend Underscore.js. It's a tight library for doing lots of basic things. Whenever possible, they match ECMAScript 5 and defer to the native implementation.

Otherwise I support Avi Flax' answer. I edited it to add a link to the MDC documentation which includes the keys() method you can add to non-ECMAScript 5 browsers.