【问题标题】:Javascript on different types of Loops不同类型循环上的 Javascript
【发布时间】:2019-05-16 01:23:32
【问题描述】:

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

问题:编写一个名为“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'

【问题讨论】:

    标签: javascript arrays string ecmascript-6


    【解决方案1】:

    因为您没有针对极端情况进行调整 - 当有两个词的长度相同并且该长度大于另一个词时。 (另请注意,您的方式非常低效,甚至需要对多一个字进行大量调整)试试这个:

    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;
    }
    

    【讨论】:

      【解决方案2】:

      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;
          } 
      }

      【讨论】:

        【解决方案3】:
        function getLongestOfThreeWords(word1, word2, word3) {
          
          var newArr = [word1, word2, word3];
          
          
          //variable for longest string and array for elements to 
          //be pushed to that meet conditions
          var longWord = newArr[0].length;
          var doubleArr = [];
        
          //iterate,
          for(var i = 0; i < newArr.length; i++) {
            //if element length is longer than longWord,
            if(newArr[i].length > longWord) {
              //replace longWord,
              longWord = newArr[i].length;
              doubleArr = [];
                //push element into doubleArr.
                doubleArr.push(newArr[i]);
            } else {
              //edge case if there is more than one word tied for longest.
              if(newArr[i].length === longWord){
                //places that word in the next index.
                doubleArr.push(newArr[i]);
              }
            }
          }
          //return the first element that met the longest condition.
          return doubleArr[0];
        }
        var output = getLongestOfThreeWords('these', 'three', 'words');
        console.log(output); // --> 'these'
        

        【讨论】:

          猜你喜欢
          • 2020-02-11
          • 2017-11-02
          • 1970-01-01
          • 2018-01-29
          • 1970-01-01
          • 1970-01-01
          • 2021-01-25
          • 1970-01-01
          • 2020-05-30
          相关资源
          最近更新 更多