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

使用Lodash按日期分组对购物车嵌套cart_add_ons字段求和问题求解

问题定位

  • 核心错误:cart_add_ons是存储附加项的数组,本身不存在mobile_price属性,你直接访问o.cart_add_ons.mobile_price得到的是undefined,转换为Number后是NaN,最终累加结果就会变成null/NaN,不符合预期。
  • 次要逻辑漏洞:JS中空数组[]属于真值,你现有o.cart_add_ons ? ... : 0的判断对空附加项的商品也会进入求和分支,不会返回0,进一步导致结果错误。

修正代码

你原有代码的整体框架是正确的,只需调整total_add_on的求和逻辑:先对单个商品的所有附加项求和,再汇总所有商品的附加项总和即可。如果需要按实际购买数量计算总金额,可以加上商品quantity字段的乘法逻辑,修正后代码如下:

result = _.chain(cart_items)
      .groupBy('date')
      .map((value, key) => ({
        date: key,
        // 若不需要按购买数量算总价,去掉 * item.quantity 即可匹配你原有逻辑
        total_amount: _.sumBy(value, item => Number(item.mobile_price) * item.quantity),
        total_add_on: _.sumBy(value, item => {
          // _.sumBy对空数组会直接返回0,无需额外判断空值
          const singleItemAddonSum = _.sumBy(item.cart_add_ons, addon => Number(addon.mobile_price));
          // 同样如果不需要按购买数量算总价,去掉 * item.quantity 即可
          return singleItemAddonSum * item.quantity;
        }),
        item_data: value,
      }))
      .sortBy('date')
      .value();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:57:05