You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对对象数组调用reduce方法,按指定属性名分组求和对应字段数值

问题诊断
  • 变量名不匹配:你定义的数组变量为population(小写p开头),reduce调用时写的是全大写的POPULATION,会直接触发未定义引用报错
  • 分组判断逻辑错误:累加器初始为空数组,存储的是人口数值,你用indexOf判断县名是否存在的逻辑完全不成立,永远返回-1,最终只会把每一条数据的男女和单独推入数组,没有做同县的累加操作
  • 缺少同县累加逻辑:就算县名判断正确,你现有逻辑只在第一次遇到该县时加了当前条目的数值,同县后续条目完全没有触发累加的分支
正确实现

用对象作为累加器做分组统计,后续可以根据需要转成数组格式:

let population = [{
    "county": "Bomi",
    "district": "Dowein",
    "male": 6589,
    "female": 6599
  },
  {
    "county": "Bomi",
    "district": "Klay",
    "male": 11884,
    "female": 11513
  },
  {
    "county": "Lofa",
    "district": "Senjeh",
    "male": 15442,
    "female": 14585
  },
  {
    "county": "Lofa",
    "district": "Suehn Mecca ",
    "male": 9025,
    "female": 8482
  }]

// 分组统计
const countyMap = population.reduce((acc, curr) => {
  const county = curr.county
  const currTotal = curr.male + curr.female
  // 已存在该分组就累加,不存在就初始化
  acc[county] = acc[county] ? acc[county] + currTotal : currTotal
  return acc
}, {})

// 如果需要输出[{县名: 总人口}]的数组格式可以加下面这步
const countyPopTotal = Object.entries(countyMap).map(([county, total]) => ({
  county,
  totalPopulation: total
}))

console.log(countyPopTotal)
/* 输出结果:
[
  { county: 'Bomi', totalPopulation: 36585 },
  { county: 'Lofa', totalPopulation: 47534 }
]
*/

内容的提问来源于stack exchange,提问作者Benjamin A. Ngafua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 01:24:06