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

如何去除美元符号与逗号后,用.reduce计算客户平均账户余额?

代码分析与修正

首先,你的思路没问题:用reduce处理求和逻辑是合适的,parseFloat在这里的用法也是正确的——它能把清理后的字符串转换成浮点数,完全符合需求。

不过你的代码存在两个小问题:

  • 函数参数array没有被使用,反而直接用了全局变量people,这会让函数失去复用性,没法处理其他类似结构的数组。
  • 在reduce的回调里,当遍历到最后一个元素时,你直接返回了acc / array.length,但此时还没把最后一个元素的余额加到累加器acc里,导致总和少了最后一项,计算出的平均值会错误。

修正后的代码

var people = [
  {
    name: "Courtney",
    age: 43, 
    balance: "$3,400"
  },
  {
    name: "Regina",
    age: 53,
    balance: "$4,000"
  },
  {
    name: "Jay",
    age: 28,
    balance: "$3,000"
  },
];

var averageBalance = function(array){
  // 先通过reduce求总和
  const total = array.reduce(function(acc, current){
    // 清理字符串并转成数字后累加
    return acc + parseFloat(current.balance.replace(/\$|,/g, ""));
  }, 0);
  // 最后计算平均值
  return total / array.length;
};

关键说明

  1. 字符串转数字:current.balance.replace(/\$|,/g, "")会把"$3,400"变成"3400",再用parseFloat转成数字3400,这部分你的写法完全正确。
  2. reduce的正确用法:先完成所有元素的累加得到总和,再单独计算平均值,逻辑更清晰,也避免了遍历最后一个元素时的判断失误。
  3. 函数复用性:使用传入的array参数而不是全局变量,现在这个函数可以处理任何包含balance字段的对象数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 06:15:40