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

在map方法内使用reduce报错'reduce is not a function'如何解决

报错原因
  • 你在map回调中对date调用reduce方法,而map遍历每个数组项时拿到的date是字符串类型,字符串原型没有reduce方法,因此触发该报错。
  • 回调中使用amount[i]取值逻辑错误,map遍历每个项时拿到的amount是当前项的单个数值,不是全量的金额数组,无法通过索引取到其他项的金额。
  • 整体逻辑结构错误:map用于对数组每一项做一对一转换,返回长度相同的新数组,而你需要的是对全数组做分组聚合,不需要套map层,直接对原数组调用reduce即可。
正确实现代码

你需要的按日期合并金额的功能可以直接通过reduce遍历原数组完成,示例如下:

// 第一步:用reduce完成按日期分组求和,结果存在Map中
const groupedMap = dividendArrayFiltered.reduce((acc, currentItem) => {
  const { date, amount } = currentItem
  acc.set(date, (acc.get(date) ?? 0) + amount)
  return acc
}, new Map())

// 第二步:按需转换格式
// 方案1:输出和原数组结构一致的对象数组(推荐,后续处理更方便)
const summedDividend = Array.from(groupedMap, ([date, amount]) => ({ date, amount }))

// 方案2:输出你原代码中想要的date、amount分别为数组的结构
// const summedDividend = {
//   date: [...groupedMap.keys()],
//   amount: [...groupedMap.values()]
// }
输出结果示例(方案1)
[
  { date: '2021-11-09', amount: 0.5 },
  { date: '2021-11-08', amount: 1 },
  { date: '2021-11-11', amount: 2 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:04