Сегодня был вызов. Я потратил целый час, пытаясь решить задачу, в которой я должен был найти самое длинное слово в строке и вернуть длину слова в виде числа. А учитывая мои ограниченные познания в JavaScript, это оказалось непростой задачей. Некоторое время я сидел, глядя на пустой экран сценария, и думал, как решить эту проблему. Выяснить, как разделить строку на массив, было достаточно просто, как только я изучил метод .split(), а затем преобразовать слова в числа также было достаточно просто:

function findLongestWord(str) {
  let strArray = str.split(' ');
  let strLengthArr = [];
  for (i = 0; i < strArr.length; i++) {
    strLengthArr.push(strArray.length[i]);
  }
}

Итак, сверху вниз:

function findLongestWord(str) {

Это настраивает функцию и готовит меня к тому, чтобы делать кое-что с тем, что я добавляю в качестве str.

let strArray = str.split(' ');

Эта часть функции берет мое str, создает массив, а затем разделяет каждую часть на отдельные свойства в массиве в соответствии с тем, что я решил использовать в качестве разделителя, в данном случае это пробел ‘ ‘. Теперь я создаю пустой массив, в котором слова преобразуются в числа, представляющие количество символов каждого из них:

let strLengthArr = [];

Отсюда я добавляю код для фактического преобразования, а затем помещаю результат в пустой массив:

for (i = 0; i < strArr.length; i++) {
    strLengthArr.push(strArray.length[i]);
  }

Это цикл for, который завершается, когда последнее слово в strArr преобразуется и помещается в strLengthArr. Как только у меня появилась идея о том, как создать эту систему, мне нужно было написать ее так, чтобы она имела для меня смысл и выполнялась должным образом. После написания этого кода я использовал console.log, чтобы проверить свою работу и увидеть фактический массив, хранящийся в strLengthArr. Проблема сводилась к тому, чтобы сравнить каждое свойство в массиве и выяснить, как вернуть наибольшее из них. Именно в это время я услышал в своей голове громкий и отчетливый голос профессора физики: «НАРИСЬ КАРТИНУ!»

Что я сделал, так это написал, чего я хотел достичь, а затем попытался перевести это в код так хорошо, как только мог. Итак, не столько картинка, сколько заметки, чтобы показать, что я хотел сделать:

Поразмыслив, я думаю, что если бы я нарисовал реальную картину, я бы лучше понял, что я делаю. Этот код не работал. Есть две вещи, которые я рассматриваю: либо я плохо понимаю, как применить рекурсию в этом случае (что является наиболее вероятной проблемой), либо я неправильно вызывал результат на консоль (что является наиболее маловероятной проблемой). ). Возможно, я неправильно использую switch? Я честно не знаю. Что я точно знаю, так это то, что завтра я потрачусь на устранение неполадок и, возможно, перепишу все это целиком.

Я думал, что на что-то наткнулся. И, может быть, я. Может быть, я все преувеличиваю. Может быть, я использую молоток вместо гаечного ключа. Может быть, я недостаточно сильно размахиваю молотком. Хорошо, что меня не заставляют сразу вырубать это. Я могу не торопиться, прорабатывая различные попытки решения и углубляясь в концепции, с которыми работаю, чтобы понять инструменты, которые я пытаюсь использовать.

И я полон решимости не позволить рекурсии победить. Так что, если ответом здесь является рекурсия, я собираюсь выяснить, как исправить этот код, чтобы он работал. Если рекурсия не является ответом, я, по крайней мере, лучше разберусь с рекурсией и узнаю, почему это не тот инструмент, который можно использовать здесь.

Если вы читаете это, дошли до этого места и у вас есть предложения, я внимательно слушаю. Подсказки, мысли и идеи приветствуются, но, пожалуйста, никаких прямых решений. Я хочу играть и делать ошибки и учиться учиться учиться.

12/100