dimayakovlev.ru


Как получить элементы с минимальным и максимальным значениями из массива на JavaScript

Когда в сценарии JavaScript надо получить элементы массива с минимальным или максимальным значениями, для этого не обязательно писать собственные функции или подключать сторонние библиотеки. Предлагаю рассмотреть два варианта решения стоящей задачи, в которых будут задействованы только стандартные возможности языка JavaScript.

При разговоре о минимальном и максимальном значении, как правило, имеются ввиду числовые значение. Поэтому дальше будет подразумеваться, что работа выполняется с массивом, элементы которого это числа.

Получение первого и последнего элементов массива после его сортировки при помощи метода sort()

Самый простой для понимания вариант решения задачи - отсортировать элементы массива по возрастанию значений. При этом первым элементом массива будет элемент с наименьшим значением, а последним - элемент с максимальный значением.

Для сортировки элементов массива доступен стандартный метод sort(). При использовании этого метода следует помнить о двух особенностях.

  1. Метод sort() не создаёт новый отсортированный массив, а изменяет существующий и возвращает ссылку на него;
  2. Метод sort() выполняет сортировку элементов в лексикографическом порядке (по алфавиту).

В случае с массивом, чьи элементы это числа, способ сортировки по алфавиту не подходит. Поэтому для метода sort() следует задать собственную функцию сравнения. Это один из тех случаев когда удобно использовать стрелочные функции JavaScript.

var myArray = [100, 2, 0, -1, -10, 101, 9, -9];
myArray.sort((a, b) => a - b);
console.log('Min: ' + myArray[0]);
console.log('Max: ' + myArray[myArray.length - 1]);

В результате элементы массива отсортированы в порядке возрастания. Результат выполнения кода:

Min: -10
Max: 101

Если в теле стрелочной функции поменять местами a и b, массив будет отсортирован в порядке убывания. Тогда первым элементом массива будет элемент с максимальным значением, а последним - элемент с минимальным значением.

var myArray = [100, 2, 0, -1, -10, 101, 9, -9];
myArray.sort((a, b) => b - a);
console.log('Min: ' + myArray[0]);
console.log('Max: ' + myArray[myArray.length - 1]);

Результат выполнения кода:

Min: 101
Max: -10

Аналогичный результат можно получить, применив к отсортированному массиву из первого примера, метод reverse().

Использование методов Math.min() и Math.max()

Эти два статических метода возвращают, соответственно, минимальное или максимальное число из группы чисел, переданных в качестве входных параметров. Если методы вызваны без параметров, будет возвращена бесконечность Infinity. Раз для корректной работы методов требуется передать им группу чисел, следует развернуть массив при помощи оператора spread (три точки).

var myArray = [100, 2, 0, -1, -10, 101, 9, -9];
console.log('Min: ' + Math.min(...myArray));
console.log('Max: ' + Math.max(...myArray));

Результат выполнения кода:

Min: -10
Max: 101

Вот такими простыми способами в сценарии JavaScript можно получить элементы массива с минимальным и максимальным числовым значениями.