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

JavaScript中Cash类实例数组sumproduct累加求和实现咨询

问题排查与正确实现

原有代码的错误点

  • 语法错误:
    1. JS类声明关键字为小写class,而非大写Class
    2. money数组不能直接声明在Cash类的定义内部,需放到类外部
    3. 所有push方法调用均缺少闭合括号,new Cash(50,4)后要补右括号
  • 循环逻辑错误:
    1. 循环条件写反,i > money.length初始状态就不成立,循环完全不会执行
    2. 循环内额外使用i++会导致索引异常跳变,且没有定义累加变量存储计算结果,计算值直接被丢弃

修正后的基础代码

// 定义Cash类
class Cash {
  constructor(v, q) {
    this.value = v;
    this.quantity = q;
  }
}

// 初始化money数组
const money = [];
money.push(new Cash(50, 4));
money.push(new Cash(20, 4));
money.push(new Cash(10, 2));

累加逻辑实现

方法1:普通for循环实现(兼容性最好)

let total = 0;
// 循环条件为i小于数组长度,遍历每一个元素
for (let i = 0; i < money.length; i++) {
  // 每次循环累加当前项的乘积到total
  total += money[i].value * money[i].quantity;
}
console.log(total); // 输出300

方法2:数组reduce方法实现(写法更简洁)

reduce是JS数组专门用来做累计计算的原生方法,天然适配任意长度的数组:

const total = money.reduce((sum, currentItem) => {
  return sum + currentItem.value * currentItem.quantity;
}, 0); // 第二个参数0是累加初始值
console.log(total); // 输出300

两种方法都可以适配任意长度的money数组,后续新增Cash实例push到数组后,重新执行计算逻辑即可得到正确的总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 09:45:01