По максимуму: использование Math.min и .max

По максимуму: использование Math.min и .max

От автора: поиск минимума и максимума в наборе чисел – обычная задача в программировании. В JavaScript для этого вполне можно использовать математические операторы или даже серию условий if, однако функция Math.max (и противоположная ей Math.min) намного эффективнее и точнее.

Math.max отличается от самописных функций тем, что она встроенная и ее можно сразу же использовать. Из набора аргументов данная функция всегда возвращает самое большое число. Например, в консоли:

Math.max(5, 10, 11, 3, 22);
> 22

Если в аргументах переданы не числа, результат будет Nan (Not A Number, для новичков эта тема вообще темный лес). Также Math.max может принимать переменные и свойства объекта:

let orbitalPeriod = new Object();
orbitalPeriod.Mercury = 87.97,
orbitalPeriod.Venus = 224.70,
orbitalPeriod.Mars = 686.98;
Math.max(orbitalPeriod.Mercury, orbitalPeriod.Venus, orbitalPeriod.Mars)
> 686.98

Единственное, что не умеет эта функция – автоматически искать максимальное значение в массиве. Здесь традиционно нужно использовать цикл и сравнивать каждое значение, сохраняя большее из них. Для браузеров с поддержкой ES6 оператор spread еще короче:

let orbitalPeriods = [87.97, 224.70, 686.98],
longestOrbit = Math.max(... orbitalPeriods);

Math.max часто используют для сравнения типа «или». Например, если вы берете размеры экрана:

let screenWidth = (screen.width, 0)

Переменная screenWidth, назначаемая через let, должна быть числом: либо ширина экрана (если тест провалился, и это не число), либо 0.

Достать до дна

Math.min работает наоборот: среди значений .min находит минимальное.

Math.min(0.139, 0.15, 1);
> 0.139

Math.min часто используют для установки или определения граничных условий. Например, у нас есть мяч, прыгающий внутри прямоугольной области. Правая сторона прямоугольника равна 500px. При соприкосновении необходимо, чтобы правая сторона мяча (ball.right) не выходила за пределы правой стороны прямоугольника (500).

let collide = Math.min(ball.right,500);

Также можно использовать оператор троеточия для «распространения» значений в массиве внутри функции Math.min. Дан массив bugSizes, нужно найти самое маленькое насекомое:

Math.min(...bigSizes)

Или можно использовать apply (поддержка которого намного лучше):

Math.min.apply(null, bigSizes);

Как и троеточие, apply можно использовать с Math.max.

Источник: http://thenewcode.com/

Редакция: Команда webformyself.

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

JavaScript&jQuery с нуля до профи

Пройдите пошаговый видеокурс по JavaScript&jQuery

Научиться

Метки:

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree