[英]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.