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

如何在JavaScript中动态累加数据库返回对象中的多个数字?

解决方案:使用数组reduce方法快速累加数值

你可以利用JavaScript数组的reduce()方法高效完成这个累加需求,这是处理数组元素聚合计算最常用的方式之一。

修改你的代码片段

把原来的forEach循环替换成下面的代码:

Feed.find({id: fountItemsFeed.id}, (err, result) => {
  // 用reduce累加所有lights值
  const totalLights = result.reduce((sum, feed) => sum + feed.lights, 0);
  console.log(totalLights); // 这里会输出50
});

代码解释

  • reduce()方法接收两个核心参数:
    1. 回调函数:每次迭代时,将当前累加的总和(sum)与当前数组元素的lights值相加
    2. 初始值0:确保即使查询结果为空数组,也能返回合法的数值0,避免出现undefined

如果你偏好先提取所有lights值再累加,也可以用map()配合reduce()(不过上面的方式更直接高效):

const totalLights = result.map(feed => feed.lights).reduce((a, b) => a + b, 0);

整合到你的原有代码里

修改后的完整回调部分示例:

User.findByIdAndUpdate(
  req.user.id,
  { lights: fountItemsFeed.lights },
  (err, foundItemsLights_Stats) => {
    Feed.find({id: fountItemsFeed.id}, (err, result) => {
      const totalLights = result.reduce((sum, feed) => sum + feed.lights, 0);
      console.log(totalLights); // 输出累加后的总数值
      // 这里可以添加你后续需要使用totalLights的业务逻辑
      res.redirect("/#" + _id);
    });
  }
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:12:27