113

Possible Duplicate:
Length of Javascript Object (ie. Associative Array)

I have an object similar to this one:

var jsonArray = {
  '-1': {
    '-1': 'b',
    '2': 'a',
    '10': 'c'
  },
  '2': {
    '-1': 'a',
    '2': 'b',
    '10': 'a'
  },
  '5': {
    '-1': 'a',
    '2': 'a',
    '10': 'b'
  }
};

I'm trying to get it's length, the problem is that jsonArray.length returns 5 instead of 3 (which is the total items it has). The array is relatively long (has 1000x2000 items) and this must be done a lot of times every second. How can I get the number of items more efficiently?

Bhuwan
  • 16,525
  • 5
  • 34
  • 57
lisovaccaro
  • 32,502
  • 98
  • 258
  • 410

3 Answers3

181

In addition to kieran's answer, apparently, modern browsers have an Object.keys function. In this case, you could do this:

Object.keys(jsonArray).length;

More details in this answer on How to list the properties of a javascript object

Community
  • 1
  • 1
NT3RP
  • 15,262
  • 9
  • 61
  • 97
22

That's an Object and you want to count the properties of it.

Object.keys(jsonArray).length

References:

Alexander
  • 23,432
  • 11
  • 63
  • 73
6

Is that your actual code? A javascript object (which is what you've given us) does not have a length property, so in this case exampleArray.length returns undefined rather than 5.

This stackoverflow explains the length differences between an object and an array, and this stackoverflow shows how to get the 'size' of an object.

Community
  • 1
  • 1
kieran
  • 1,537
  • 10
  • 10