Логотип Зефирнет

JavaScript: получить минимальный и максимальный элемент массива

Дата:

JavaScript: получить минимальный и максимальный элемент массива

Введение

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

В этой статье мы рассмотрим, как получить минимальный и максимальный элемент массива в JavaScript. Мы также рассмотрим четыре различных метода и сравним их скорость при работе с большими массивами.

Как получить минимальное и максимальное количество элементов массива с помощью Математики объект

Math — это встроенный в JavaScript глобальный удобный объект, содержащий множество методов и констант, которые могут вам понадобиться при выполнении математических операций. В этой статье мы будем использовать два метода: Math.min() и Math.max() - оба они принимают список чисел в качестве аргументов. Как следует из их названий, один возвращает элемент с наименьшим значением, а другой возвращает элемент с наибольшим значением:

console.log(Math.min(20, 23, 27));
console.log(Math.max(20, 23, 27));

console.log(Math.min(-20, -23, -27));
console.log(Math.max(-20, -23, -27));

Если хотя бы один из переданных элементов не является числом или не может быть преобразован в число, оба Math.min() и Math.max() Возвращает NaN:

console.log(Math.min('-20', -23, -27));
console.log(Math.max('number', -23, -27));

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

const myArray = [2, 3, 1];
console.log(Math.min(myArray));

Однако быстрое решение этой проблемы — использовать оператор распространения для развертывания элементов:

const myArray = [2, 3, 1];
console.log(Math.min(...myArray));

Если вы хотите узнать больше об Операторе спреда – прочитайте наш Руководство по оператору спреда в JavaScript!

Получите максимальный и минимальный элемент с помощью уменьшения ()

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

Стоит рассказать об этом методе из-за универсальности его применения:

const myArray = [20, 23, 27];

let minElement = myArray.reduce((a, b) => {
    return Math.min(a, b);
});

console.log(minElement);

Найдите минимальный и максимальный элемент с помощью применять()

Ассоциация apply() метод используется для вызова функции с заданным this значение и массив аргументов. Это позволяет нам вводить массивы в Math.min() статическая функция:

const myArray = [20, 23, 27];

let minElement = Math.min.apply(Math, myArray);
console.log(minElement);

let minElement = Math.min.apply(null, myArray);
console.log(minElement);

Получение минимального и максимального количества элементов с помощью стандартных циклов — максимальная производительность

Циклы используются в JavaScript для выполнения повторяющихся задач на основе условия. Условия возврата true or false. Цикл будет продолжать работать до тех пор, пока определенное условие не вернется false. В нашем случае мы будем использовать for цикл — обычно используется для многократного запуска кода.

Получить минимальный элемент

Во-первых, мы инициализируем минимальный элемент первым элементом массива. Затем мы проходим через весь массив чтобы увидеть, меньше ли значение любого другого элемента текущего минимального значения - если это так, мы установим новое минимальное значение на значение текущего элемента:

const myArray = [20, 23, 27];

let minElement = myArray[0];
for (let i = 1; i < arrayLength; ++i) {
    if (myArray[i] < minElement) {
        minElement = myArray[i];
    }
}

console.log(minElement);

Получить максимальный элемент

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

const myArray = [20, 23, 27];

let maxElement = myArray[0];
for (let i = 1; i < arrayLength; ++i) {
    if (myArray[i] > maxElement) {
        maxElement = myArray[i];
    }
}

console.log(maxElement);

Тест производительности

Используя JS Benchmark — мы запустили все эти подходы с различными входными данными, от 100 до 1000000 элементов в массиве. Производительность относительна и зависит от длины массива.

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

  • Для небольших массивов (100) reduce() метод сработал лучше всего, за ним следуют стандартные циклы, оператор спреда, а затем apply() метод. Участники, занявшие второе место, практически равны по производительности.
  • Для средних массивов (1000) лучше всего работают стандартные циклы, за которыми следуют reduce(), оператор спреда и apply() метод. Стандартные циклы значительно быстрее, чем reduce() здесь, что, в свою очередь, довольно быстрее, чем у занявших второе место.
  • Для действительно больших массивов (1000000) стандартные циклы настолько превосходят все другие методы, что аргументы в пользу стандартных циклов очень веские.

Стандартные циклы очень хорошо масштабируются и проигрывают конкурентам только при применении к небольшим массивам. Если вы имеете дело с несколькими элементами или небольшими массивами, все методы будут довольно простыми. Чем больше массив, тем больше преимуществ от использования стандартных циклов.

Примечание: Не принимайте бенчмарки за чистую монету! Они запускаются на разных машинах, вероятно, с разными версиями браузеров и движками JS. Протестируйте их в своем приложении и выберите масштабируемый и самый быстрый вариант для своего случая использования.

Заключение

В этом руководстве мы рассмотрели, как получить минимальное и максимальное количество элементов массива в JavaScript. Мы взглянули на Math.min() и Math.max() методы, оператор спреда, reduce() Метод, apply() метод и написал собственный подход к получению элементов через for петля.

Наконец, мы сравнили результаты, отметив, что на самом деле не имеет значения, какой подход вы используете для небольших массивов, в то время как вы должны использовать стандартные циклы for для больших массивов.

Последнее обновление: 11 мая 2022 г.

Была ли эта статья полезна?

Вам также может понравиться…

Получайте учебные пособия, руководства и задания разработчиков на свой почтовый ящик.

Создайте основу, необходимую для подготовки, развертывания и запуска приложений Node.js в облаке AWS. Изучите Lambda, EC2, S3, SQS и многое другое!

© 2013-2022 Stack Abuse. Все права защищены.

Spot_img

Последняя разведка

Spot_img

Чат с нами

Всем привет! Могу я чем-нибудь помочь?