不同类型循环上的 Javascript

标签 javascript arrays string ecmascript-6

这是一个关于条件的问题。现在,我搜索并看到了一种不同的(正确的)方法。但我只是不明白为什么我的方法不起作用。:

问题:编写一个名为“getLongestOfThreeWords”的函数。

给定 3 个单词,“getLongestOfThreeWords”返回三个单词中最长的一个。

注释:

如果存在平局,则应返回平局中的第一个单词。

我理解“正确”的方式,但我的答案显示“未定义”,并且似乎无法弄清楚为什么..

"My way"    

function getLongestOfThreeWords(word1, word2, word3) {
if(word1.length > word2.length  && word1.length > word3.length){
    return word1;
} else if(word2.length > word1.length && word2.length > word3.length){
    return word2;
} else if (word3.length > word1.length && word3.length > word2.length){
    return word3;
} 
}

对比

"correct way"

function getLongestOfThreeWords(word1, word2, word3) {
  let wordsArr = [word1, word2, word3];
  let longestWord = '';

  for (var i = 0; i < wordsArr.length; i++) {
    if (wordsArr[i].length > longestWord.length) {
      longestWord = wordsArr[i];
    } 
  }
  return longestWord;
}
var output = getLongestOfThreeWords('these', 'three', 'words');
console.log(output); // --> 'these'

最佳答案

因为您还没有针对边缘情况进行调整 - 当有两个单词长度相同并且该长度大于另一个单词时。 (另请注意,您的方法效率很低,即使多一个单词也需要大量调整)尝试以下操作:

if (...) {...}
else if (...) {...}
else if (...) {...}
else if (word1.length == word2.length && word1.length > word3.length) {
    return word1;
}
else if (word2.length == word3.length && word2.length > word1.length) {
    return word3;
}

关于不同类型循环上的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56159573/

相关文章:

javascript - Cypress.io - 使用 JavaScript window.prompt 保存值

arrays - 如何获得 Array.remove(at :) in Swift) 的 O(1) 时间复杂度

arrays - 问题从 Swift 中的 xml 文件解码字符串

c++ - 函数体调用 C++ 末尾的奇怪循环

javascript - meteor JS : How to expire mongo data automatically?

javascript - 在 AngularJS 中的 View 之间保留 GoogleMaps map 对象

c++ - 如何在 C++ 中的混合字符串整数行中提取特定整数

string - 在空格上拆分字符串但忽略双引号之间的部分

javascript - 如何将函数的参数重新分配回原始参数名称?

检查指针是否指向给定数组