Как узнать, какое число в массиве является максимальным?
Задача решается при помощи метода sort() для объектов-прототипов Array.
Решение задачи — простой пример
У нас есть чистый массив из одного типа данных:
var massiv = [777, 45, -12, 73, -800, 0, 56, 2433, -3478, 412]
Все значения у элементов массива являются числами. Теперь мы можем вызвать метод sort(), чтобы провести сортировку элементов. Внутрь метода sort() нам нужно передать функцию, которая вычитает два каких либо значения и тем самым находит наибольшее или наименьшее.
massiv.sort((a,b)=>b-a)
В таком виде массив будет отсортирован от наибольшего к наименьшему числу. То есть первый элемент массива будет иметь максимальное значение, а самый последний элемент — минимальное.
Теперь нам останется просто получить первый элемент массива.
massiv.sort((a,b)=>b-a)[0]
В ответ мы получаем число 2433
Средний пример
Немного изменим первоначальный массив.
var massiv = [[777, 45], -12, [73, [-800], 0], [[[56]]], 2433, [-3478, 412]]
Наш массив имеет разную глубину вложенности. Задача та же. Нужно найти максимальное число в массиве.
Если мы повторим применение massiv.sort((a,b)=>b—a)[0], то получим что-то неопределённое.
Решение неправильное. В этой ситуации нужно действовать иначе. Этот массив нужно сначала привести в один уровень, чтобы элементами массива были числа, а не массивы. Как это сделать?
Воспользуемся методом flat и передадим в него наш массив. Мы не будем гадать на каком уровне вложенности находится каждое из чисел. Мы просто извлечём их на уровень infinity
massiv.flat(Infinity)
Теперь массив принял вид из предыдущего примера и по нему можно пройтись сортировкой.
massiv.flat(Infinity).sort((a,b)=>b-a)[0]
Сложный пример
Пока не придумал.
Информационные ссылки
Стандарт ECMAScript — Раздел «23.1 Array Objects» — https://tc39.es/ecma262/#sec-array-objects