@Katya1111

Почему возвращает 4 вместо 19 (длина самого длинного слова в предложении)?

Здравствуйте!

Помогите, пожалуйста.

Решаю задачу, где нужно найти самое длинное слово в предолжении.
В качестве примеров для тестирования дают несколько предложений. Все предложения прошли тест, кроме одного. В чём причина?
Длина самого длинного слова здесь 19, почему возвращает 4?
Думала, дело в super-long. Убрала тире (superlong), теперь возвращает 9. Затем полностью избавилась от этого слова, возвращает 4.

var str = "What if we try a super-long word such as otorhinolaryngology";

var newString = str.split(" ");

  var newArray = [];
  for(var i = 0; i < newString.length; i++){
        
    newArray.push(newString[i].length);
  }
  
  newArray.sort();

console.log(newArray[newArray.length - 1]);
  • Вопрос задан
  • 123 просмотра
Решения вопроса 4
sort'у нужна функция, которая будет считать разницу между числами. А пока она считает по строкам

Более декларативный вариант:
var words = str.split(" ");
var max = words.reduce((l,word) => l>word.length?l:word.length, 0);
Ответ написан
Yadalay
@Yadalay
Php, Mysql, Html, Css, Js/Jquery/Ajax, Laravel
Потому что сортировка идёт не так, как Вам нужно. Работает так, что 4 будет после 10, так как сортировка идёт по алфавиту (элементы являются строками, а не числами). В таком случае 10 будет до 4.
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
str.split(' ').reduce(function(l, w) {
  if (w.length > l) {
    return w.length;
  }
  return l
}, 0 )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы