Сценарии базового алгоритма JavaScript
ОБЗОР И НАЗНАЧЕНИЕ
Возвращает длину самого длинного слова в предоставленном предложении. Ваш ответ должен быть числом.
Предоставленный код
- функция findLongestWordLength(str) {
- вернуть ул.длина;
- }
- findLongestWordLength("Быстрая коричневая лиса перепрыгнула через ленивую собаку");
ЦЕЛИ
- findLongestWordLength("Быстрая коричневая лиса перепрыгнула через ленивую собаку") должна возвращать число.
- findLongestWordLength("Быстрая коричневая лиса перепрыгнула через ленивую собаку") должна возвращать 6.
- findLongestWordLength("Да прибудет с вами сила") должен вернуть 5.
- findLongestWordLength("Google делает бочку") должен вернуть 6.
- findLongestWordLength("Какова средняя скорость полета порожней ласточки") должна возвращать 8.
- findLongestWordLength("Что, если мы попробуем очень длинное слово, такое как оториноларингология") должно вернуть 19.
Мыслительный процесс
Шаги для проверки понимания учащимися
- Мне нужно будет разбить строку на массив, чтобы я мог оценить каждое слово.
- Мне нужно найти длину каждого массива.
- Создайте цикл и оператор if для сравнения длин по одной.
- Возвращает длину в числе
Что я на самом деле сделал
Опишите занятие, которое укрепит урок
- Сначала я преобразовал строку в массив.
- Затем я погуглил, как узнать, сколько символов содержится в значении массива, и обнаружил, что это можно сделать, назначив переменную, пройдя цикл и найдя длину индекса массива. У меня есть текущая распечатка console.log, чтобы увидеть, что я делаю, работает.
- Я знал, что теперь мне нужно написать оператор if для сравнения длин. Я решил сделать это в цикле for. Я решил создать переменную для хранения первого индекса, а затем сравнить эту переменную с i.
- В этот момент я немного застрял, я знал, что у меня есть код записи для вызова длины каждого слова, но мой оператор сравнения if не переносил эти числа в новую переменную, если она была больше. Эта переменная печатала 0.
- У меня возник соблазн посмотреть на ответ в этот момент, но я решил просмотреть его в последний раз. Затем я понял, что у меня было ==, что означает «равно», вместо =, которое присваивало бы номер переменной. Как только я сделал переключатель, это сработало.
- В распечатке я заметил ошибку в конце «TypeError: Cannot read property 'length' of undefined». Я начал пытаться диагностировать проблему, но добавил -1 в конец .length в моем цикле for, но это не решило проблему. . Тогда я подумал, может быть, у меня не было конца моей петле. Поэтому я переместил свой оператор return в оператор else, и это устранило ошибку.
- В этот момент я хотел проверить это, поэтому я нажал «Выполнить тесты», но получил много ошибок. Я enventually понял, что это была опечатка и смог успешно работать.
Что я мог сделать
На основе решений для максимальной нотации и производительности Big O.
Теперь я понимаю, что мог бы получить намного более простой код, используя Math.max, который нашел бы наибольшее число длины, и …arr для распределения по массиву с помощью split(" "), с map(). Это внутри чистой функции с word.length, вероятно, является наименьшим количеством кода для решения этой проблемы. В противном случае это также можно решить с помощью рекурсии.