如何统计字典列表中指定字段值的出现频率
实现方案
核心逻辑分两步处理:
- 先把嵌套的二维数组用
flat()拍平为一维对象数组,消除嵌套层级方便遍历 - 用
reduce做聚合统计,按country字段做一级分组,每个分组下对value字段做频次累加
注意:你提供的示例代码里sunny/rainy等值没有加字符串引号,直接运行会报变量未定义错误,下方代码已经修正这个问题。
完整代码
const dictionary_demo = [ [ {country: "georgia", value: "sunny"}, {country: "france", value: "rainy"} ], [ {country: "georgia", value: "sunny"}, {country: "france", value: "gloomy"} ], [ {country: "georgia", value: "rainy"}, {country: "france", value: "dry"} ] ] const countResult = dictionary_demo.flat().reduce((res, item) => { const { country, value } = item // 初始化国家分组 if (!res[country]) res[country] = {} // 对应值计数累加 res[country][value] = (res[country][value] ?? 0) + 1 return res }, {})
运行结果
执行后countResult的输出结构完全匹配预期:
{ georgia: { sunny: 2, rainy: 1 }, france: { rainy: 1, gloomy: 1, dry: 1 } }
如果需要输出成中文描述的统计文本,遍历这个结果对象拼接对应字符串即可。
内容的提问来源于stack exchange,提问作者wandering_coder
相关产品推荐
相关产品推荐

