Javascript на разных типах петель - PullRequest
0 голосов
/ 16 мая 2019

Это вопрос об условностях. Теперь я искал и вижу другой (правильный) способ сделать это. Но я просто не понимаю, почему мой путь не работает.

вопрос: написать функцию с именем "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'

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Поскольку вы не скорректировали крайние случаи - когда есть два слова одинаковой длины, и эта длина больше, чем другое слово. (Также обратите внимание, что ваш путь довольно неэффективен и требует большой корректировки даже для еще одного слова) Попробуйте это:

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;
}
0 голосов
/ 16 мая 2019

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;
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...