Math.min() возвращает наименьшее число из переданных аргументов.
Проще всего запомнить так: метод выбирает самое маленькое значение из списка.
Синтаксис
Math.min(x1, x2, ...)
Метод принимает любое количество аргументов.
Что делает Math.min()
Math.min() сравнивает все переданные значения и возвращает минимальное.
console.log(Math.min(10, 4, 7)); // 4
console.log(Math.min(-3, 8, 0)); // -3
console.log(Math.min(2, 2, 2)); // 2
Если минимальное значение встречается несколько раз, результат всё равно будет одним и тем же числом.
Что возвращает Math.min()
Math.min() возвращает число типа number.
const result = Math.min(12, 5, 9);
console.log(result); // 5
console.log(typeof result); // "number"
Это именно число, а не строка.
Один аргумент и пустой вызов
Если передать один аргумент, метод просто вернёт его.
console.log(Math.min(5)); // 5
console.log(Math.min(-12)); // -12
Если не передать ничего, результатом будет Infinity.
console.log(Math.min()); // Infinity
Сначала это может выглядеть странно, но такое поведение полезно как стартовое значение при поиске минимума.
Отрицательные и дробные числа
Метод одинаково хорошо работает с целыми, отрицательными и дробными значениями.
console.log(Math.min(-4, -9, -2)); // -9
console.log(Math.min(3.5, 2.1, 8.7)); // 2.1
console.log(Math.min(-1.5, 0, 2)); // -1.5
Чем меньше число на числовой прямой, тем больше шанс, что именно оно и вернётся.
Math.min() и массив
Вот здесь часто возникает ошибка.
Math.min() ждёт не массив, а отдельные аргументы.
const numbers = [8, 3, 12, 1];
console.log(Math.min(numbers)); // NaN
Если передать массив напрямую, метод не получит список чисел для сравнения.
Правильный вариант - развернуть массив через оператор ....
const numbers = [8, 3, 12, 1];
console.log(Math.min(...numbers)); // 1
Именно так обычно ищут минимальное значение в массиве.
Если массив пустой, результат снова будет Infinity.
const numbers = [];
console.log(Math.min(...numbers)); // Infinity
Math.min() и Math.max()
Math.min() и Math.max() работают в противоположные стороны.
console.log(Math.min(4, 9, 1)); // 1
console.log(Math.max(4, 9, 1)); // 9
Math.min()ищет самое маленькое значениеMath.max()ищет самое большое
Их часто используют вместе, когда значение нужно ограничить диапазоном.
const value = 120;
const limited = Math.min(value, 100);
console.log(limited); // 100
Здесь Math.min() не даёт значению стать больше 100.
Неявное приведение типов
Math.min() сначала пытается привести аргументы к числам.
console.log(Math.min("10", "3", 7)); // 3
console.log(Math.min(null, 5)); // 0
console.log(Math.min(true, 5)); // 1
console.log(Math.min(undefined, 5)); // NaN
Из-за этого строки с числами могут сработать, но полагаться на такое поведение обычно не стоит.
Если хотя бы один аргумент не удаётся нормально превратить в число, результатом станет NaN.
console.log(Math.min("10", "abc")); // NaN
NaN и Infinity
Для специальных числовых значений метод ведёт себя предсказуемо.
console.log(Math.min(NaN, 4)); // NaN
console.log(Math.min(Infinity, 4)); // 4
console.log(Math.min(-Infinity, 4)); // -Infinity
Infinity может участвовать в сравнении как очень большое число, а -Infinity всегда будет самым маленьким значением.
Числа не меняются
Math.min() не изменяет исходные значения. Он только возвращает новый результат.
const a = 15;
const b = 7;
const min = Math.min(a, b);
console.log(a); // 15
console.log(b); // 7
console.log(min); // 7
Когда это полезно
Math.min() удобно использовать, когда:
- нужно найти самое маленькое значение среди нескольких чисел
- нужно получить минимальную цену, длину, координату или оценку
- нужно ограничить значение сверху
Пример:
const uploaded = 14;
const visible = Math.min(uploaded, 10);
console.log(visible); // 10
Так можно легко сказать: “показываем не больше 10 элементов”.
Частые ошибки
Передавать массив без spread
const numbers = [8, 3, 12, 1];
console.log(Math.min(numbers)); // NaN
Нужно писать Math.min(...numbers).
Забывать, что пустой вызов возвращает Infinity
console.log(Math.min()); // Infinity
Если список значений может быть пустым, этот случай лучше предусмотреть отдельно.
Передавать значения, которые не приводятся к числу
console.log(Math.min("10", "abc")); // NaN
Одного неподходящего значения достаточно, чтобы итогом стал NaN.
Быстрая памятка
Math.min()возвращает самое маленькое значение из аргументов- метод возвращает
number - аргументов может быть сколько угодно
- если аргумент один, вернётся он же
- если аргументов нет, результатом будет
Infinity - для массива обычно используют
Math.min(...array) - если хотя бы один аргумент превращается в
NaN, итог тоже будетNaN
Коротко
Math.min() - это стандартный способ найти минимальное число в JavaScript. Главное, что стоит запомнить: метод принимает отдельные аргументы, а для массива его обычно вызывают как Math.min(...array).