Как найти максимальное число в массиве js
Циклы часто применяют при обработке массивов.
Массив- совокупность переменных одинакового типа, имеющих одно имя и различные индексы, задающиеся последовательно. Массивы могут быть одномерными (вектора), двухмерными (матрицы) и многомерными.
Среди типовых задач, связанных с обработкой массивов, часто встречаются следующие: нахождение максимального (минимального) элемента массива и упорядочивание элементов в массиве по возрастанию (убыванию). Ниже рассмотрим возможные решения этих задач.
1) Пусть требуется найти максимальный элемент в одномерном массиве Х, состоящем из 12 элементов.
Возможное решение:
Вместо «традиционного» решения:
max_x=x[0];
for(i=0; i max_x) max_x=x[i];
можно воспользоваться методом «max» объекта «Math» языка JavaScript. И тогда решение будет выглядеть компактнее (но менее прозрачно):
max_x=Math.max.apply(0,x);
2) Пусть требуется найти минимальный элемент и его индексы в матрице (двухмерном массиве) Х из трех строк и четырех столбцов.
Возможное решение:
3) Пусть требуется упорядочить по возрастанию одномерный массив Х, состоящий из 12 элементов.
Возможное решение:
// объявление массива и его ввод/вывод в исходном порядке
var x = new Array();
document.write(«Исходный массив
«);
for(i=0; i x[i+1], то меняем их значения местами: копируем значение x[i] в буферную переменную buf; присваиваем x[i]=x[i+1]; и значение x[i] из buf присваиваем x[i+1]-му элементу */
if(x[i]>x[i+1])
>
// выводим ответы
document.write(«
Отсортированный по возрастанию массив
» );
for(i=0; i x[i+1]) // (flag=1 — флаг, указывает на то, что были перестановки)
>
>while(flag); // . повторять, если на предыдущем шаге были сделаны перестановки
// выводим ответы
document.write(«
Отсортированный по возрастанию массив
» );
for(i=0; i»);
Вы можете выполнить эту программу в новом окне браузера.
В JavaScript массивы — это объекты, имеющие свои методы (функции для работы с этими объектами). И один из этих методов — метод сортировки sort.
Чтобы отсортировать массив чисел, необходимо передать методу sort функцию сравнения двух чисел. Функция, передаваемая методу sort, поочерёдно вызывается для различных пар элементов массива, и должна вернуть отрицательное число, если первый аргумент меньше второго, положительное число, если первый аргумент больше второго, и 0, если они равны. (Подробнее функции в JavaScript рассмотрены в следующем разделе.)
Таким образом, возможное решение:
var x = new Array();
document.write(«Исходный массив
«);
for(i=0; i
x[i]=Number(prompt(«x[«+i+»] x[«+i+»]=»+x[i]+»
«);
>
x.sort(function f(a, b) < return a - b; >); // вот и все решение — в одну строку!
document.write(«
Отсортированный по возрастанию массив
» );
for(i=0; i»);
Вы можете выполнить эту программу в новом окне браузера.
JS максимальное число
Чтобы найти максимальное число в JavaScript используйте Math.max . Смотрите пример:
console.log(Math.max(10, 45, 50, 344, 30));
Результат выполнения кода:
Максимальный элемент в массиве через apply
Хитрым путем можно найти максимальное значение массива, используя Math.max в связке с методом apply :
let arr = [10, 45, 50, 344, 30]; console.log(Math.max.apply(null, arr));
Результат выполнения кода:
Максимальный элемент в массиве через spread
Использование метода apply для нахождения минимального элемента в массиве считается устаревшим с появлением оператора spread. Давайте посмотрим пример:
let arr = [10, 45, 50, 344, 30]; console.log(Math.max(. arr));
Результат выполнения кода:
Смотрите также
- урок
нахождение минимального числа
Как найти самое большое число в массиве js
Для того, чтобы найти максимальный элемент в массиве, можно воспользоваться не только агрегацией. Давайте обратимся к стандартным возможностям языка и рассмотрим метод Math.max.apply():
const numbers = [-94, 87, 12, 0, -67, 32]; const maxValue = Math.max.apply(null, numbers); //обратите внимание, что в записи данного метода обязателен null. //Если забыть в записи данного выражения null, то в переменную maxValue вернётся -Infinity. console.log(maxValue); // => 87
Есть ещё более хитрый способ использовать метод Math.max():
Для этого вспомним про spread оператор.
const numbers = [-94, 87, 12, 0, -67, 32]; const maxValue = Math.max(. numbers); console.log(maxValue); // => 87
И невозможно не упомянуть про библиотеку Lodash с методом _.max():
const numbers = [-94, 87, 12, 0, -67, 32]; const maxValue = _.max(numbers); console.log(maxValue); // => 87
Документация:
- Math.max.apply()
- _.max()
Максимальное и минимальное значение в массиве
потому что Вы сравниваете два соседних элемента, а значит в min и max получите два последних элемента массива. чтобы заставить этот код работать как надо, сравнивайте каждый элемент с min и с max но, мнится мне, существует более элегантное решение.
3 апр 2012 в 14:52
8 ответов 8
Сортировка: Сброс на вариант по умолчанию
Во имя Джавахарлала Неру, зачем такие сложности?!
>>> Math.min.apply(null, [1,3,5,-1,8,0]) -1 >>> Math.max.apply(null, [1,3,5,-1,8,0]) 8
Отслеживать
ответ дан 3 апр 2012 в 15:22
2,449 1 1 золотой знак 15 15 серебряных знаков 15 15 бронзовых знаков
ахаха, дико плюсую! недавно занялся js, про прототипы знаю, а про такие банальности нет!
3 апр 2012 в 15:25
а подкинете ссылку? чтоб я разобрался в этих строках и возможно тоже посмеялся 😉 или хоть скажите что почитать)
3 апр 2012 в 15:58
4 апр 2012 в 5:12
более короткий в ES2015: Math.max(. arr)
4 дек 2017 в 17:07
Да, но только есть один очень интересный нюансик. Всё бы хорошо, когда массив небольшой, но как только массив огромен, например о миллионе элементов, тогда Chrome, например, Вам гневно скажет, что Uncaught RangeError: Maximum call stack size exceeded! Потому что apply создаёт стэк непомерных размеров. И тогда в этом случае используем стандартные средства))