如何在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()方法接收两个核心参数:- 回调函数:每次迭代时,将当前累加的总和(
sum)与当前数组元素的lights值相加 - 初始值
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
相关产品推荐
相关产品推荐

