Encontrar maior e menor número de array em JavaScript

Neste artigo você vai aprender a encontrar maior e menor número de array em JavaScript, utilizando funções nativas da linguagem

Para encontrar o maior e o menor número de um array em JavaScript, use Math.max() e Math.min() com o spread operator: Math.max(…arr) devolve o maior valor e Math.min(…arr) devolve o menor. O spread (…) é necessário porque esses métodos recebem números como argumentos separados, não um array direto. Para arrays muito grandes, prefira reduce() ou um laço, que evitam o erro de estouro de pilha.

Encontrar maior e menor número de array capa

Fala programador(a), beleza? Bora aprender mais sobre arrays e também sobre JavaScript!

Em JavaScript temos métodos da biblioteca Math para nos ajudar com a tarefa de encontrar números máximos e mínimos

Porém precisamos passar como argumento o array com o spread operator (…)

Ou seja, este código vai precisar pelo menos da versão ES6 de JavaScript, o que alguns navegadores antigos ainda não tem acesso

Formação Vibe Coding
Formação Recomendada

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Veja o exemplo prático da solução do problema:

const arr = [1, 382, 3, 123, 44, 0.9, 12];

const min = Math.min(...arr);
const max = Math.max(...arr);

console.log(min); // 0.9
console.log(max); // 382

Aqui criamos o array primeiramente, e definimos outras duas variáveis como max e min

Nelas aplicamos o snippet necessário para atingir o objetivo, passamos o array para os métodos max e min de Math

Porém com o … antes, que é o spred operator

Este operador faz com os itens sejam enviados um a um, podendo assim o JS definir qual é o maior e o menor número do array alvo

E então temos o resultado final, que neste caso foram .9 e 382 =)

Conclusão

Neste artigo você aprendeu a encontrar maior e menor número de array em JavaScript

Utilizamos os métodos min e max de Math

Foi necessário passar o array como argumento, porém com o spread operator, que é um recurso da versão 6 do Ecma Script

Então tome cuidado com a compatibilidade em navegadores mais antigos

Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!

Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!

Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias

O link acima contém um cupom de desconto para os cursos!

E quando o array é gigante?

O spread tem um limite escondido que muita gente não conhece

Quando o array é muito grande, o Math.max(…arr) pode estourar um RangeError: Maximum call stack size exceeded

Isso acontece porque cada item do array vira um argumento separado e lota a pilha de chamadas do JavaScript

O ponto exato onde isso quebra muda de motor pra motor, então pode rodar liso num navegador e falhar em outro

Nesses casos a saída é usar reduce() ou um laço simples, que passam item por item e não sofrem desse limite:

Pra arrays do dia a dia o spread resolve numa boa, mas se tu mexe com muitos dados já sabe o truque

Cuidado com array vazio e com NaN:

Dois detalhes que pegam a galera desprevenida

Se tu chamar Math.max() sem nenhum número (ou espalhando um array vazio), ele retorna -Infinity, e o Math.min() retorna Infinity

E se algum item do array for ou virar NaN, tanto o Math.max quanto o Math.min devolvem NaN

Então, antes de confiar no resultado, vale garantir que o array não tá vazio e que só tem número lá dentro

O material próprio disponível é sobre gerar número aleatório com Math.floor e Math.random, não sobre max/min de array, então não dá pra cravar aqui um relato de teste real sem inventar experiência. Pra virar primeira mão de verdade, faltaria rodar o Math.max(…arr) num array bem grande em navegadores diferentes e anotar em qual ponto cada um estoura o RangeError, comparando o desempenho com a versão em reduce().

Perguntas frequentes

Como encontrar o maior número de um array em JavaScript?

Use Math.max com o spread operator: Math.max(…arr). O spread expande o array em argumentos separados, que é o formato que o método espera.

Como encontrar o menor número de um array?

Use Math.min(…arr). É a mesma ideia do Math.max, só que devolve o menor valor.

Por que Math.max com o array direto não funciona?

Porque Math.max() e Math.min() recebem números como argumentos separados, não um array. Passando o array direto ele não compara os itens. Por isso usamos o spread operator (…) pra espalhar os elementos: Math.max(…arr).

Preciso mesmo do spread operator? E navegadores antigos?

O spread em chamada de função é um recurso do ECMAScript 2015 (ES6). Funciona em todos os navegadores modernos, mas não no Internet Explorer. Se precisar de compatibilidade com navegadores bem antigos, dá pra chegar no mesmo resultado com reduce().

E se o array for muito grande?

Com arrays muito grandes, o Math.max(…arr) pode lançar RangeError: Maximum call stack size exceeded, porque cada item vira um argumento e lota a pilha de chamadas. O limite depende do motor JavaScript, então pode funcionar num navegador e falhar em outro. Nesses casos, use reduce() ou um laço, que iteram item a item sem esse limite.

O que Math.max retorna com um array vazio?

Math.max() sem argumentos (ou com um array vazio espalhado) retorna -Infinity, e Math.min() retorna Infinity. Por isso vale checar se o array tem itens antes de usar o resultado.

E se tiver um valor NaN no array?

Se qualquer argumento for ou virar NaN, tanto Math.max quanto Math.min retornam NaN. Garanta que o array só tem números pra evitar esse resultado inesperado.

Leia também

Subscribe
Notify of
guest

1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
HEITOR

Ótimo post!! Me ajudou com meu trabalho de programação do curso.

Formações

Formação SAAS com IA

Formação SAAS com IA

Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!

  • 291 aulas
  • 18 projetos
  • 24h 17min

Blog | Mais populares