【发布时间】:2022-01-11 23:15:06
【问题描述】:
给定一个示例 JSON 对象数组,像这样......
[
{
"firstName": "Bob",
"lastName": "Smith",
"city": "Preston",
"st": "Florida",
"age": 15
},
{
"firstName": "Tom",
"lastName": "Jones",
"city": "Springfield",
"st": "Illinois",
"age": 34
},
{
"firstName": "Mary",
"lastName": "Hart",
"city": "Miami",
"st": "Florida",
"age": 22
},
{
"firstName": "Jenny",
"lastName": "Dixon",
"city": "Palm City",
"st": "Florida",
"age": 26
}
]
根据特定属性的分组获取出现次数的最佳方法是什么?所以,假设我想生成一个 JSON 对象,它具有每个唯一状态(“st”)和出现次数......
[
{
"st": "Illinois",
"count": 1
},
{
"st": "Florida",
"count": 3
}
]
我可以使用 for-let 手动完成,循环遍历数组,在循环时跟踪值等。但我确信使用 ES6 有更有效的方法。你能帮帮我吗?谢谢。
【问题讨论】:
-
Object.entries(data.reduce((o, d) => ({...o, [d.st]: (o[d.st] || 0) + 1 }), {})).map(([st,count]) => ({ st, count })) -
const results = Object.values(data.reduce((obj, item) => { obj[item.st] = obj[item.st] = { st: item.st : count: 0 }; obj[item.st].count++; return obj }, {}));
标签: javascript arrays ecmascript-6