Получить общее количество элементов на объекте Json?

Возможный дубликат:
Длина объекта Javascript (т.е. ассоциативный массив)

У меня есть объект, похожий на этот:

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

Я пытаюсь получить его длину, проблема в том, что jsonArray.length возвращает 5 вместо 3 (это общие элементы, которые у него есть). Массив относительно длинный (имеет 1000x2000 элементов), и это нужно делать много раз каждую секунду. Как я могу получить количество элементов более эффективно?

Ответ 1

В дополнение к ответу kieran, по-видимому, современные браузеры имеют функцию Object.keys. В этом случае вы можете сделать это:

Object.keys(jsonArray).length;

Подробнее в этом ответе на Как перечислить свойства объекта javascript

Ответ 3

Это ваш фактический код? Объект javascript (который вы нам предоставили) не имеет свойства length, поэтому в этом случае exampleArray.length возвращает undefined, а не 5.

fooobar.com/info/75533/... объясняет различия по длине между объектом и массивом, а fooobar.com/info/657/... показывает, как получить "размер" объекта.