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

sumAscii函数问题:应返回最高ASCII得分姓名却返回总分,求修正

修正sumAscii函数以实现需求

需求说明

接收一个姓名数组,计算每个姓名的得分(得分由每个字符转换为小写后的ASCII值总和构成),并返回得分最高的姓名。示例:姓名'John'的得分为431,因为'j'的ASCII码是106,'o'是111,'h'是104,'n'是110。

原代码存在的问题

  • getAsciiScore函数没有接收单个姓名参数,反而遍历整个输入数组,计算的是所有姓名的ASCII总分,而非单个姓名的得分
  • 外层循环逻辑混乱,嵌套遍历字符后直接返回,没有完成所有姓名的遍历和比较,根本无法找到得分最高的姓名

修正后的代码

function sumAscii(arrayOfNames) {
  // 计算单个姓名的ASCII得分
  function getAsciiScore(name) {
    let sum = 0;
    for (const letter of name) {
      sum += letter.toLowerCase().charCodeAt(0);
    }
    return sum;
  }

  let highestScore = -1;
  let topName = '';

  // 遍历所有姓名,找出得分最高的
  for (const name of arrayOfNames) {
    const currentScore = getAsciiScore(name);
    if (currentScore > highestScore) {
      highestScore = currentScore;
      topName = name;
    }
  }

  return topName;
}

修正要点

  • 重构getAsciiScore:让它只负责计算单个姓名的得分,接收name作为参数,遍历该姓名的每个字符,累加小写后的ASCII值
  • 主函数初始化最高得分(设为-1,确保任何有效姓名的得分都能覆盖初始值)和对应姓名变量
  • 遍历数组中的每个姓名,计算其得分后与当前最高得分对比,若更高则更新记录
  • 最终返回得分最高的姓名(若多个姓名得分相同,会返回第一个出现的最高分姓名)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:56:05