Junior
Como classificaria um array de números?
sobes.tech IA
Resposta da IA
// Usamos o método sort() com uma função de comparação
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Ordenação crescente
// Para ordenar por ordem decrescente:
// numbers.sort((a, b) => b - a);
O método sort() em JavaScript ordena os elementos do array no local. Por padrão, converte os elementos em strings e ordena lexicograficamente. Para ordenar números corretamente, é necessário passar uma função de comparação ao sort().
A função de comparação aceita dois argumentos, a e b.
- Se a função retornar um número negativo,
avirá antes deb. - Se retornar um número positivo,
bvirá antes dea. - Se retornar 0, a ordem dos elementos não muda.
Para ordenar números em ordem crescente, usa-se (a, b) => a - b. Se a for menor que b, o resultado é negativo, e a vem antes de b.
Para ordenar em ordem decrescente, usa-se (a, b) => b - a. Se b for menor que a, o resultado é positivo, e b vem antes de a.
Outros métodos (menos frequentes para arrays numéricos simples, mas úteis):
-
Método
localeCompare()para strings com números:// Não recomendado para números puros, mas pode ser usado // se os números estiverem representados como strings e for necessário considerar a localidade. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Ordena como [ "1", "2", "10" ] -
Criar uma cópia do array antes de ordenar:
// Se desejar manter o array original const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // ou // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);