繁体   English   中英

统计object中的财产数量

[英]count the number of property in object

我试图从给定的 object 中找到isSelected=true的计数。

   {
    "MainData1": [
        {
            "Child1": [
                {
                    "value": "item1",
                    "isSelected": true
                },
                {
                    "value": "item2",
                    "isSelected": true
                }
            ]
        }
    ],
    "MainData2": [
        {
            "Child2": [
                {
                    "value": "item",
                    "isSelected": true
                }
            ]
        }
    ]
}

我试过forEach循环。

我们可以用简单的方法来做吗?

预期计数将为3

注:为动态数据

提前致谢

对于所有未知键,您可以使用Object.values()来检索相应的值,然后使用flatMap过滤器来获取每个 object 的计数。外部 array.reduce array.reduce()可用于计算所有嵌套过滤的 arrays:

 const data = { "MainData1": [ { "Child1": [ { "value": "item1", "isSelected": true }, { "value": "item2", "isSelected": true } ] } ], "MainData2": [ { "Child2": [ { "value": "item", "isSelected": true } ] } ] }; const count = Object.values(data).flatMap(x => x).reduce( (count, current) => count + Object.values(current).flatMap(x => x).filter(x => x.isSelected).length, 0); console.log(count);

我认为代码行应该是这样的

 const data = { "MianData": [ { "Child1": [ { "value": "item1", "isSelected": true }, { "value": "item2", "isSelected": true } ], "Child2": [ { "value": "item3", "isSelected": true }, { "value": "item4", "isSelected": false } ] } ] } let result = 0; if (data.MianData.Child1[0].isSelected){ result++; } if (data.MianData.Child1[1].isSelected){ result++; } if (data.MianData.Child2[0].isSelected){ result++; } if (data.MianData.Child2[1].isSelected){ result++; } console.log(result); //or return result;

希望对您有所帮助。

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM