You need to enable JavaScript to run this app. JavaScript使用reduce统计各作者博客数量未得到预期结果怎么办
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript使用reduce统计各作者博客数量未得到预期结果怎么办

reduce写法错误原因分析

核心错误是你违反了Array.reduce的使用规则:回调函数每轮执行完成后必须返回当前的累加器acc,才能保证下一轮迭代可以正常拿到累加的对象。

你的原写法回调里只有三目运算表达式:

acc[curr.author] ? acc[curr.author]+=1 : acc[curr.author]=1

这个表达式的本质是赋值操作,赋值语句的返回值是等号右侧的计算结果(数字类型):

  1. 第一轮迭代时,初始acc是空对象,给Michael Chan对应的属性赋值为1,此时表达式返回值是1
  2. 第二轮迭代开始,acc被替换为上一轮返回的数字1,尝试访问1[curr.author]本身就是无效操作,后续所有迭代都无法正常累加
  3. 最终整个reduce方法的返回值就是最后一轮迭代赋值的结果1

正确写法

可以给回调加函数体,显式返回acc:

const countResult = blogs.reduce((acc,curr)=> {
  acc[curr.author] = acc[curr.author] ? acc[curr.author] + 1 : 1
  return acc
}, {})

也可以用逗号运算符简化为一行写法:

const countResult = blogs.reduce((acc,curr)=> (acc[curr.author] = (acc[curr.author] || 0) + 1, acc), {})

内容的提问来源于stack exchange,提问作者Burton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:33:01