关于javascript:计算JSON中的键/值

Count Key/Values in JSON

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Length of Javascript Associative Array

我有一个JSON,看起来像这样:

1
2
3
4
Object:
   www.website1.com :"dogs"
   www.website2.com :"cats"
   >__proto__ : Object

当我这样做时会打印:

1
console.log(obj);

我正在尝试获取此JSON中的项目计数,obj.length返回"undefined"和obj[0].length返回

Uncaught TypeError: Cannot read property 'length' of undefined

在这种情况下,我希望长度返回"2"。我怎样才能找到伯爵?

谢谢!


你必须自己数数:

1
2
3
4
5
6
7
8
9
function count(obj) {
   var count=0;
   for(var prop in obj) {
      if (obj.hasOwnProperty(prop)) {
         ++count;
      }
   }
   return count;
}

虽然现在我看到了关于这个问题的第一条评论,但在那一页上有一个更好的答案。一个内衬,可能同样快,如果不是更快:

1
function count(obj) { return Object.keys(obj).length; }

不过要注意,对Object.keys()的支持似乎还没有跨浏览器。


.length只适用于数组,而不适用于对象。

1
2
3
4
var count = 0;
for(var key in json)
    if(json.hasOwnProperty(key))
        count++;