Сценарии базового алгоритма JavaScript

ОБЗОР И НАЗНАЧЕНИЕ

Возвращает длину самого длинного слова в предоставленном предложении. Ваш ответ должен быть числом.

Предоставленный код

  1. функция findLongestWordLength(str) {
  2. вернуть ул.длина;
  3. }
  4. findLongestWordLength("Быстрая коричневая лиса перепрыгнула через ленивую собаку");

ЦЕЛИ

  1. findLongestWordLength("Быстрая коричневая лиса перепрыгнула через ленивую собаку") должна возвращать число.
  2. findLongestWordLength("Быстрая коричневая лиса перепрыгнула через ленивую собаку") должна возвращать 6.
  3. findLongestWordLength("Да прибудет с вами сила") должен вернуть 5.
  4. findLongestWordLength("Google делает бочку") должен вернуть 6.
  5. findLongestWordLength("Какова средняя скорость полета порожней ласточки") должна возвращать 8.
  6. findLongestWordLength("Что, если мы попробуем очень длинное слово, такое как оториноларингология") должно вернуть 19.

Мыслительный процесс

Шаги для проверки понимания учащимися

  1. Мне нужно будет разбить строку на массив, чтобы я мог оценить каждое слово.
  2. Мне нужно найти длину каждого массива.
  3. Создайте цикл и оператор if для сравнения длин по одной.
  4. Возвращает длину в числе

Что я на самом деле сделал

Опишите занятие, которое укрепит урок

  1. Сначала я преобразовал строку в массив.
  2. Затем я погуглил, как узнать, сколько символов содержится в значении массива, и обнаружил, что это можно сделать, назначив переменную, пройдя цикл и найдя длину индекса массива. У меня есть текущая распечатка console.log, чтобы увидеть, что я делаю, работает.
  3. Я знал, что теперь мне нужно написать оператор if для сравнения длин. Я решил сделать это в цикле for. Я решил создать переменную для хранения первого индекса, а затем сравнить эту переменную с i.
  4. В этот момент я немного застрял, я знал, что у меня есть код записи для вызова длины каждого слова, но мой оператор сравнения if не переносил эти числа в новую переменную, если она была больше. Эта переменная печатала 0.
  5. У меня возник соблазн посмотреть на ответ в этот момент, но я решил просмотреть его в последний раз. Затем я понял, что у меня было ==, что означает «равно», вместо =, которое присваивало бы номер переменной. Как только я сделал переключатель, это сработало.
  6. В распечатке я заметил ошибку в конце «TypeError: Cannot read property 'length' of undefined». Я начал пытаться диагностировать проблему, но добавил -1 в конец .length в моем цикле for, но это не решило проблему. . Тогда я подумал, может быть, у меня не было конца моей петле. Поэтому я переместил свой оператор return в оператор else, и это устранило ошибку.
  7. В этот момент я хотел проверить это, поэтому я нажал «Выполнить тесты», но получил много ошибок. Я enventually понял, что это была опечатка и смог успешно работать.

Что я мог сделать

На основе решений для максимальной нотации и производительности Big O.

Теперь я понимаю, что мог бы получить намного более простой код, используя Math.max, который нашел бы наибольшее число длины, и …arr для распределения по массиву с помощью split(" "), с map(). Это внутри чистой функции с word.length, вероятно, является наименьшим количеством кода для решения этой проблемы. В противном случае это также можно решить с помощью рекурсии.