javascript - 如何从 json 对象中获取总计数
问题描述
我正在尝试从 json 对象中获取特定值的计数
从以下数据中,我想了解纽约市的人数。预期将来自以下数据2
mockdata: {
"sampleData": [{
"name": "jane",
"city": "ny"
},
{
"name": "jack",
"city": "ny"
},
{
"name": "brandon",
"city": "ca"
}
]
}
我试过了:
mockdata.filter(item => item.value == "ny").length;
但我无法得到确切的计数。
解决方案
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"]);
推荐阅读
- docker - 一个 pod 中的容器与多容器 pod 中的一个容器进行通信
- reactjs - 保存数据库中数组项的位置
- javascript - 如果第二条是黑色的,如何只发送一条消息,但如果我填写了两个变量,如何发送两条消息?
- ios - 单击按钮添加其他文本字段不起作用
- sql - Where 子句和 Join on 子句中的别名
- javascript - TypeError:部署在 Heroku 上的 Strapi 应用仅支持绝对 URL
- java - 使用 Quarkus 和 RestEasy 上传多个文件
- mysql - Float 的十六进制对话 - Big Endian
- r - 如何将以下代码变成for循环?
- swagger - 在大摇大摆中,我可以将整个帖子请求正文用作纯文本参数吗?