有没有办法从对象中获取元素数量?

Sac*_*hag 7 javascript

让我详细解释一下.我跟下了一个物体 -

{
    "OBJECT1" : {
        "NAME1" : "VALUE1",
        "NAME2" : "VALUE2",
        "NAME3" : "VALUE3"
     },
     "OBJECT2" : {
        "NAME4" : "VALUE4",
        "NAME5" : "VALUE5"
     }
}
Run Code Online (Sandbox Code Playgroud)

从这个对象,我想得到像OBJECT1 = 3中的元素数量和OBJECT2 = 2中的元素数量.如果有可能使用javascript.基本上我要做的是,动态地遍历对象中可用的名称值对,这样如果有人向对象添加另一个元素,我就不必更改我的代码.

也排除了任何替代方案,因为我被允许仅在我的用例中使用对象.

Kri*_*ard 9

在不转换对象的情况下,您可以遍历对象计数属性,如下所示:

function countObjectProperties(obj)
{
    var count = 0;
    for(var i in obj)
        if(obj.hasOwnProperty(i))
            count++;

    return count;
}
Run Code Online (Sandbox Code Playgroud)

扩展你需要使用hasOwnProperty的原因,正如我在下面的评论中所说,你可能遇到一个问题,其中库或浏览器已经向Objects添加了方法和属性,为了避免计算这些问题,我们在计算之前检查hasOwnProperty.有关MSDNMozilla开发人员中心的更多详细信息

  • @Samuel_xL你需要hasOwnProperty来避免计算函数,以及浏览器和/或插件可能添加的其他不需要的内置函数. (2认同)