Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти максимум и минимум в массиве

Короткий ответ

Math.max() принимает отдельные числа, поэтому массив раскрывают оператором ...:

const numbers = [4, 9, 2, 7];
 
console.log(Math.max(...numbers));
console.log(Math.min(...numbers));

Результат:

9
2

Объект с наибольшим значением

Чтобы получить сам объект, а не число, используйте reduce():

const players = [
  { name: 'Anna', score: 82 },
  { name: 'Oleg', score: 95 },
];
const best = players.reduce((top, player) => (player.score > top.score ? player : top));
 
console.log(best.name);

Результат:

Oleg

Сразу оба

Один проход reduce() может собрать и минимум, и максимум:

const temps = [12, -3, 25, 7];
const range = temps.reduce(
  (acc, t) => ({ min: Math.min(acc.min, t), max: Math.max(acc.max, t) }),
  { min: Infinity, max: -Infinity },
);
 
console.log(range.min, range.max);

Результат:

-3 25

Частая ошибка

Для пустого массива Math.max() возвращает -Infinity, а без ... получает массив целиком и возвращает NaN:

console.log(Math.max(...[]));
console.log(Math.max([4, 9, 2]));

Результат:

-Infinity
NaN

Функции из этого ответа

  • Math.max — Возвращает наибольшее из чисел.
  • Math.min — Возвращает наименьшее из переданных чисел.
  • Array.prototype.reduce — Сводит массив к одному значению.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.