Подсчет ключей/значений в JSON
Возможный дубликат:
Длина ассоциативного массива Javascript
У меня есть JSON, который выглядит так:
Object:
www.website1.com : "dogs"
www.website2.com : "cats"
>__proto__ : Object
Это печатает, когда я это делаю:
console.log(obj);
Я пытаюсь получить количество элементов внутри этого JSON, obj.length возвращает "undefined" и obj [0].length возвращает
Uncaught TypeError: Не удается прочитать длину свойства undefined
Я ожидаю, что длина вернет "2" в этом случае. Как найти счет?
Спасибо!
Ответы
Ответ 1
Вы должны сами их подсчитать:
function count(obj) {
var count=0;
for(var prop in obj) {
if (obj.hasOwnProperty(prop)) {
++count;
}
}
return count;
}
Хотя теперь, когда я увидел первый комментарий к этому вопросу, на этой странице есть гораздо более приятный ответ. Однострочный, возможно, так же быстро, если не быстрее:
function count(obj) { return Object.keys(obj).length; }
Помните, что поддержка Object.keys()
пока еще не кросс-браузер.
Ответ 2
.length
работает только с массивами, а не с объектами.
var count = 0;
for(var key in json)
if(json.hasOwnProperty(key))
count++;