Может кто-нибудь объяснить, как работает этот цикл for?

#javascript #for-loop #if-statement

#javascript #for-цикл #if-оператор

Вопрос:

Эта функция возвращает наибольшее число из массива. Мне нужна помощь в понимании части if : if (arr[i] > maxNumber) {maxNumber = arr[i]} . Использование псевдокода или объяснение, как именно это работает?

 function max(arr){
    let maxNumber = 0
    for (i = 0; i < arr.length; i  ) {
        if (arr[i] > maxNumber){
            maxNumber = arr[i]
        }
    }
    return maxNumber
}

console.log(max([1,2,3,40,5]));  

Комментарии:

1. почему бы просто не использовать Math.max(...arr) ?

2. @Lawrence: Домашнее задание.

3. Изучите код построчно. Итак, у вас есть переменная MaxNumber со значением 0, и вы зацикливаете arr, сначала arr[i] значение 1, поэтому оно больше, чем MaxNumber, поэтому вы присваиваете 1 переменной MaxNumber. во втором цикле у вас есть значение 2 from arr[i] и снова вы проверяете, больше ли оно текущего значения MaxNumber, которое на данный момент равно 1. Итак, продолжайте в том же духе, вы возвращаете обратно 40, потому что это самый большой в этом массиве =)

4. Действительно, домашнее задание. Спасибо Халил, замечательное объяснение.

5. Надеюсь, максимальное число всегда больше нуля.

Ответ №1:

 function max(array) {
    largest number is equal to 0;
    for (i is equal to 0; i is less than the length of array; increment i by 1 each time) {
        if (the item at the current index is greater than the previous largest number) {
            set the largest number to to the item at the current index;
        }
    }
    return largest number which will be 0 if no larger number is found
}
  

Стоит отметить, что если все значения в массиве отрицательные, он вернет 0;
Это будет работать и для отрицательных чисел.

 function max(arr){
    let maxNumber = -Infinity
    for (i = 0; i < arr.length; i  ) {
        if (arr[i] > maxNumber){
            maxNumber = arr[i]
        }
    }
    return maxNumber
}
  

Комментарии:

1. Мне нравится последнее утверждение, наибольшее число, которое будет равно 0, если большее число не найдено . 0 отсутствует в массиве, поэтому модульный тест не пройдет. требуха, которую они преподают.

Ответ №2:

Что делает эта часть: if (arr[i] > maxNumber) {maxNumber = arr[i]} проверяет, является ли текущий элемент массива больше текущего MaxNumber и изменяет ли он значение MaxNumber на текущий массив.

Короче говоря, max(whatEverArray) всегда будет возвращать ноль или наибольшее значение массива. и если он возвращает ноль, это означает, что все значения массива либо равны нулю, либо меньше нуля.