[英]Count number of all specific keys (or values) in json object/array- JavaScript/Angular?
我有像这样的大型嵌套 json 对象,我想计算整个对象中宠物的数量。 怎样才能做到这一点? 我已经厌倦了Object.keys(obj[0]).length但没有成功达到预期的结果。 另外,如何更深入地计算数组以计算一些嵌套值,例如pet中的颜色?
在 JavaScript 或 Angular 中使用多级数组的好教程是什么?
obj = [
{
"person": {
"name": "a",
},
"pet": {
"name": "1"
}
},
{
"person": {
"name": "b",
},
"pet": {
"name": "2",
"color": "black",
}
},
{
"person": {
"name": "c",
},
"pet": {
"name": "3",
"color": "red",
}
}
]
使用宠物属性和宠物的颜色属性过滤数组并执行数组计数。
let obj = [ { "person": { "name": "a", }, "pet": { "name": "1" } }, { "person": { "name": "b", }, "pet": { "name": "2", "color": "black", } }, { "person": { "name": "c", }, "pet": { "name": "3", "color": "red", } } ]; let petItemCount = obj.filter(x => x["pet"]).length; console.log(petItemCount); let petItemWithColorCount = obj.filter(x => x["pet"] && x["pet"]["color"]).length; console.log(petItemWithColorCount);
如果pet
值可能为null
或宠物的color
可能为空,
let petItemCount = obj.filter(x => x["pet"] != undefined).length;
console.log(petItemCount);
let petItemWithColorCount = obj.filter(x => x["pet"] && x["pet"]["color"] != undefined).length;
console.log(petItemWithColorCount);
let pets = 0;
obj.map( item => {
if(item.pet) {
pets += 1;
}
})
听起来减少是合适的:
colors = obj.reduce(
(sum, { pet }) => pet.color !== undefined ? ++sum : sum,
0)); // -> initial count value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.