统计JSON数组中所有特定键(或值)的数量

ux6nzvsh  于 2022-12-05  发布在  其他
关注(0)|答案(3)|浏览(158)

我有一个很大的嵌套JSON对象,我想计算整个对象中pets的个数。我们该如何实现呢?我已经尝试了Object.keys(obj[0]).length,但没有成功地得到想要的结果。另外,我该如何更深入地计算数组中的嵌套值,例如pet中的color
在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",
          }
        }
]
vsikbqxv

vsikbqxv1#

let pets = 0;
obj.map( item => {
  if(item.pet) {
    pets += 1;
  }
})
7cjasjjr

7cjasjjr2#

使用pet属性和pet的color属性过滤数组,并执行数组计数。

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或pet的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);
cbjzeqam

cbjzeqam3#

听起来减少会是一个适合:

colors = obj.reduce(
 (sum, { pet }) => pet.color !== undefined ? ++sum : sum, 
0)); // -> initial count value

相关问题