Объясните: Мин. / Макс. Массив с бесконечностью - PullRequest
0 голосов
/ 23 сентября 2018

Я искал, как найти минимальное и максимальное значение в массиве (без использования математики), и я наткнулся на этот код на форуме:

var array = [4, 2, 3, 4]
var min = arrayMin(array);
out.innerHTML = min;

function arrayMin(arr) {
  var len = arr.length, min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
};
<p id="out"></p>

Я не могу действительно обернуть голову и понять это полностью, особенно часть бесконечности.Может ли кто-нибудь быть таким милым и объяснить это как можно проще?

Ответы [ 2 ]

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

Infinity - это свойство глобального объекта или, другими словами, переменной в глобальной области видимости.

Начальное значение Infinity - Number.POSITIVE_INFINITY.Значение Infinity (положительная бесконечность) больше любого другого числа.Математически это значение ведет себя так же, как бесконечность;например, любое положительное число, умноженное на бесконечность, равняется бесконечности, а любое число, деленное на бесконечность, равняется 0.

Итак, что делает вышеуказанная функция, создает временную переменную с именем min, которая отслеживает наименьшеечисло.Когда выполняется первое сравнение, оно будет перезаписывать значение min каждый раз, так как Infinity больше, чем любое другое число.Затем он продолжает перебирать массив, выполняя ту же оценку, пока не завершится.

Вот встроенный фрагмент, демонстрирующий, как это работает:

var array = [4, 2, 3, 4]
var min = arrayMin(array);

function arrayMin(arr) {
  var len = arr.length, min = Infinity;
  while (len--) {
    console.log(min);
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
};

Подробнее о Infinity можно прочитать здесь .

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

Логика вроде бы в порядке.Код, который вы добавили, дает минимальное значение.min инициализируется в бесконечность, а min обновляется при прохождении через массив.

Давайте посмотрим, что происходит с первым элементом массива.

4 < Infinity //index = 0 min becomes 4
2 < 4 //index = 1 min becomes 2

и т. Д. Код выведет минимальное значение.

...