首页 > 解决方案 > 如何从 json 对象中获取总计数

问题描述

我正在尝试从 json 对象中获取特定值的计数

从以下数据中,我想了解纽约市的人数。预期将来自以下数据2

mockdata: {
  "sampleData": [{
      "name": "jane",
      "city": "ny"
    },
    {
      "name": "jack",
      "city": "ny"
    },
    {
      "name": "brandon",
      "city": "ca"
    }
  ]
}

我试过了:

mockdata.filter(item => item.value == "ny").length;

但我无法得到确切的计数。

标签: javascriptarrays

解决方案


filter适用于数组并且mockdata是一个对象。所以,mockdata.filter应该是mockdata.sampleData.filter

mockData.sampleData.filter(item => item.city == "ny").length

您也可以使用 reduce,创建按城市分组的对象,然后只需传递城市名称即可获取count.

const mockData = {
  "sampleData": [{
      "name": "jane",
      "city": "ny"
    },
    {
      "name": "jack",
      "city": "ny"
    },
    {
      "name": "brandon",
      "city": "ca"
    }
  ]
};

const groupByCity = mockData.sampleData.reduce((a, {city}) => {
  a[city] = (a[city] || 0) + 1;
  return a;
}, {});

console.log(groupByCity["ny"]);
console.log(groupByCity["ca"]);


推荐阅读