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

如何在JavaScript中使用循环对对象各元素执行减法操作

修改后的完整实现代码如下:

function splitTheBill(x) {
  let toPayObject = {};

  function sum(obj) {
    let sum = 0;
    for (let el in obj) {
      if (obj.hasOwnProperty(el)) {
        sum += Number(obj[el]);
      }
    }
    return sum;
  }

  let amountPaid = sum(x);
  // 动态获取参与分摊的人数,适配任意人数场景
  const participantCount = Object.keys(x).length;
  let shouldPay = amountPaid / participantCount;

  console.log("总支付金额 £" + amountPaid + " 人均应付:£" + shouldPay);

  // 遍历计算每人差额,存入新对象
  for (let person in x) {
    if (x.hasOwnProperty(person)) {
      toPayObject[person] = x[person] - shouldPay;
    }
  }

  return toPayObject;
}

调用示例splitTheBill({A: 20, B: 15, C: 10})可得到预期输出{A: 5, B: 0, C: -5}。

核心调整说明

  • 修正了sum函数的内部引用逻辑,遍历传入的参数对象而非固定依赖外层的x变量,提升代码复用性
  • 人均应付金额改为按实际参与人数动态计算,不再固定除以3,适配2人及以上的分摊场景
  • 新增对象遍历逻辑,将每个成员的已付金额减去人均应付后存入新对象,不会修改传入的原始数据
  • 将原代码中的parseInt替换为Number,支持小数金额的计算,避免整数截断导致的计算误差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:09:03