Перейти к содержимому

Как найти максимальное число в массиве js

  • автор:

Как найти максимальное число в массиве 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 создаёт стэк непомерных размеров. И тогда в этом случае используем стандартные средства))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *