Может кто-нибудь объяснить, что каждая переменная, оператор, аргумент и т. Д. В этом цикле работают? - PullRequest
0 голосов
/ 30 сентября 2018

Только что начал программировать неделю назад, и сейчас мне это нравится.Я понял, что слишком быстро прохожу учебный план в лагере свободного кода и перейду к следующему разделу, не понимая его полностью.В этом примере цикла кто-то может объяснить мне, как этот цикл полностью работает?Цель состоит в том, чтобы найти самое длинное слово в этом предложении «быстрая коричневая лиса перепрыгнула через ленивую собаку».

-Что означает переменная i в этом случае?

-Я поигрался с изменением 'i = 0', поставил числа 1-9, проверил результат и получил: числа 0-4 дает мне «6», цифры 5-7 дают мне «4», числа 8 дают мне «3», а 9 дает мне 0

Я не понимаю, как эти числа привели к 6,4,3,и 0. Может кто-нибудь объяснить это мне.Спасибо!

    function findLongestWordLength(str) {
      var words = str.split(' ');
      var maxLength = 0;

      for (var i = 9; i < words.length; i++) {
        if (words[i].length > maxLength) {
          maxLength = words[i].length;
        }
      }

      return maxLength;
    }
    console.log(findLongestWordLength("The quick brown fox jumped over the lazy dog"));        

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Индексы начинаются с # 0 (первое слово).# 1 - второе слово и т. Д. Слово № 8 в вашем предложении - «собака».

i = 9 означает начать проверку со слова № 9.(Который не существует) и, следовательно, приводит к тому, что самое длинное слово имеет 0 букв.

Если вы начинаете со слова № 5, вы рассматриваете только «над ленивым псом» и получаете самое длинное слово с 4буквы.

Если вы начнете до этого, вы также подумаете, что «прыгнул», и вы получите самое длинное слово, содержащее 6 букв.


Также: не по теме любимая мозоль (извините!): «Быстрая коричневая лиса перепрыгивает через ленивую собаку» - это панграмма (содержит каждую букву алфавита).Но его часто неверно цитируют как «прыгнул» вместо «прыжок», что, к сожалению, больше не превращает его в панграмму, потому что ему нужно «s» из «прыжков».:( Так что ответ должен быть 5.;)

0 голосов
/ 30 сентября 2018

Я прокомментировал код, который вы разместили, с некоторыми пояснениями.

// This defines a function that takes a parameter which will be referred to as str inside this function
function findLongestWordLength(str) {

  // this creates an array of strings by spliting the variable str on every space. Essentially this creates an array of the words in the input parameter
  var words = str.split(' '); 
  
  // this is the value we will return to the user. We initialise it to 0 before going through the list of words. It will be used to hold the length of the longest word.
  var maxLength = 0;

  // this loops through the array of words we created earlier. var i is the loop variable/counter
  // NOTE: this is setup wrong, var i should start from 0
  // basically we're saying perform the code inside the for loop until i is higher than the number of words we have then stop.
  // This is a traditional setup to loop through an array.
  for (var i = 0; i < words.length; i++) {
  
    // This if block is saying if the number of letters in the current word is more than the 
    // current maximum we have then it should be the new maximum
    if (words[i].length > maxLength) {
      maxLength = words[i].length;
    }
  }
  
  // finally we return to the caller the maximum we found
  return maxLength;
}
   
 console.log(findLongestWordLength("The quick brown fox jumped over the lazy dog")); // 6 because jumped is the longest word

Немного больше объяснений для циклов:

Существует более 1 способа циклически проходить вещи.Циклы - это способ выполнять один и тот же код снова и снова, пока не будут выполнены определенные критерии.

Поскольку у нас есть список слов, и мы знаем, сколько слов у нас есть цикл для , который подходит для их прохождения.

A для настройки цикла в том виде, в котором ваш код использует счетчик.

  1. Сначала вы устанавливаете начальное значение счетчика (0)
  2. , затем вы указываете циклу условие, которому оно должно соответствовать, чтобы прекратить цикл, в этом случае, когда счетчик достигаетколичество слов у нас есть.
  3. Наконец, вы указываете немного кода для выполнения в конце каждой итерации, в данном случае i ++.i++ по сути то же самое, что и i = i + 1, который увеличивает счетчик после каждой итерации.Без этого мы никогда не будем соответствовать установленным критериям, и цикл будет выполняться вечно.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...