JavaScript | Максимальное число в массиве?

Как узнать, какое число в массиве является максимальным?

Задача решается при помощи метода sort() для объектов-прототипов Array.

Решение задачи — простой пример

У нас есть чистый массив из одного типа данных:

var massiv = [777, 45, -12, 73, -800, 0, 56, 2433, -3478, 412]

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

massiv.sort((a,b)=>b-a)

В таком виде массив будет отсортирован от наибольшего к наименьшему числу. То есть первый элемент массива будет иметь максимальное значение, а самый последний элемент — минимальное.

Отсортировали массив - JavaScript
Отсортировали массив — JavaScript

Теперь нам останется просто получить первый элемент массива.

massiv.sort((a,b)=>b-a)[0]
Максимальное число в массиве - JavaScript
Максимальное число в массиве — JavaScript

В ответ мы получаем число 2433

 

Средний пример

Немного изменим первоначальный массив.

var massiv = [[777, 45], -12, [73, [-800], 0], [[[56]]], 2433, [-3478, 412]]

Наш массив имеет разную глубину вложенности. Задача та же. Нужно найти максимальное число в массиве.

Если мы повторим применение massiv.sort((a,b)=>ba)[0], то получим что-то неопределённое.

Сортировка массива разной глубины - JavaScript
Сортировка массива разной глубины — JavaScript

Решение неправильное. В этой ситуации нужно действовать иначе. Этот массив нужно сначала привести в один уровень, чтобы элементами массива были числа, а не массивы. Как это сделать?

Воспользуемся методом flat и передадим в него наш массив. Мы не будем гадать на каком уровне вложенности находится каждое из чисел. Мы просто извлечём их на уровень infinity

massiv.flat(Infinity)
Вытащили числа на один уровень массива - JavaScript
Вытащили числа на один уровень массива — JavaScript

Теперь массив принял вид из предыдущего примера и по нему можно пройтись сортировкой.

massiv.flat(Infinity).sort((a,b)=>b-a)[0]
Применили этажность перед сортировкой - JavaScript
Применили этажность перед сортировкой — JavaScript

 

Сложный пример

Пока не придумал.

Информационные ссылки

Стандарт ECMAScript — Раздел «23.1 Array Objects» — https://tc39.es/ecma262/#sec-array-objects

JavaScript | Массивы (Array)

Поделись записью