【问题标题】:Counting word score from an array从数组中计算单词分数
【发布时间】:2020-04-17 21:46:24
【问题描述】:

任务是给定由单个空格分隔的单词字符串,计算每个单词的分数(a = 1、b = 2、c = 3 等)并返回分数最高的单词。如果单词具有相同的分数,则应返回给定字符串中首先出现的单词。 CodeWars 再次欺骗我,我只有一个测试不能证明我的代码有效,其余的都可以:/

function high(x){
  const arr = x.split(' ');
  let score = 0;
  let highestWord = undefined;
  var currentScore = 0;
  arr.map((word) => {
    currentScore = word.split('').reduce((sum, letter) => {
      return sum + letter.charCodeAt(0) - 64;
    }, 0);
    if (currentScore > score) {
      score = currentScore;
      highestWord = word;
    }
  });
  return highestWord;
}

【问题讨论】:

  • 什么输入失败了?需要输入和预期输出的minimal reproducible example - 我们无法调试我们看不到的问题
  • 如果你没有分配结果,不要使用map(),使用forEach()
  • @CertainPerformance 我不认为挑战网站会告诉你输入失败的原因。
  • 不幸的是,如果没有“期望的行为和特定的问题或错误”,这个问题就离题了。 IIRC,您可以“购买”测试用例以查看失败的地方,如果您需要调试帮助,您需要找出一个说明问题的案例,或者购买它

标签: javascript arrays string


【解决方案1】:

64A 的 ASCII 代码的基础,而不是 a。假设分数不区分大小写,您需要在计算分数之前将所有内容映射到相同的大小写。

所以用

const arr = x.toUpperCase().split(" ");

首先将所有内容变为大写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多