#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
fromarr[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)
всегда будет возвращать ноль или наибольшее значение массива. и если он возвращает ноль, это означает, что все значения массива либо равны нулю, либо меньше нуля.