用JSON计算键/值

Dou*_*eux 15 javascript json

可能重复:
Javascript关联数组的长度

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

Object:
   www.website1.com : "dogs"
   www.website2.com : "cats"
   >__proto__ : Object
Run Code Online (Sandbox Code Playgroud)

当我这样做时打印:

console.log(obj);
Run Code Online (Sandbox Code Playgroud)

我试图得到这个JSON中的项目的计数,obj.length返回"undefined"和obj [0] .length返回

未捕获的TypeError:无法读取未定义的属性"长度"

在这种情况下,我希望长度返回"2".我怎样才能找到计数?

谢谢!

dav*_*vin 26

你必须自己计算:

function count(obj) {
   var count=0;
   for(var prop in obj) {
      if (obj.hasOwnProperty(prop)) {
         ++count;
      }
   }
   return count;
}
Run Code Online (Sandbox Code Playgroud)

虽然现在我看到了关于这个问题的第一个评论,但在该页面上有一个更好的答案.单行,可能同样快,如果不是更快:

function count(obj) { return Object.keys(obj).length; }
Run Code Online (Sandbox Code Playgroud)

请注意,支持Object.keys()似乎还没有跨浏览器.


Eri*_*ric 6

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

var count = 0;
for(var key in json)
    if(json.hasOwnProperty(key))
        count++;
Run Code Online (Sandbox Code Playgroud)