Você está aqui: JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como ordenar os elementos de uma matriz de inteiros em ordem crescente ou decrescente usando o método sort() do objeto ArrayQuantidade de visualizações: 10968 vezes |
Em algumas situações precisamos ordenar os elementos de uma matriz de inteiros em ordem crescente ou decrescente. Para isso podemos usar o método sort() do objeto Array. Veja:<html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos criar um array contendo cinco elementos var numeros = new Array(5, 3, 19, 21, 74); // vamos exibir os elementos na ordem original document.write('Elementos na ordem original:<br>'); for(var i = 0; i < numeros.length; i++){ document.write(numeros[i] + ' - '); } // vamos ordenar a matriz em ordem crescente Porém, ao executarmos este código teremos uma surpresa. O resultado será: Elementos na ordem original: 5 - 3 - 19 - 21 - 74 - Elementos em ordem crescente: Isso aconteceu porque o método sort() sem nenhum argumento ordena a matriz em ordem crescente léxica, ou seja, levando em consideração o valor ASCII de cada caractere. Assim, o "1" em 19 faz com que este valor venha antes do 3 e do 5. Para contornar este problema só precisamos fornecer uma função personalizada à função sort(). Veja esta nova versão do código: <script type="text/javascript"> // função personalizada usada no auxílio da ordenação de // matrizes com valores numéricos function comparar(a, b){ if(a < b) return -1; else if(a > b) return 1; else return 0; } // vamos criar um array contendo cinco elementos var numeros = new Array(5, 3, 19, 21, 74); // vamos exibir os elementos na ordem original document.write('Elementos na ordem original:<br>'); for(var i = 0; i < numeros.length; i++){ Agora o resultado será: Elementos na ordem original: 5 - 3 - 19 - 21 - 74 - Elementos em ordem crescente: A função auxiliar fornecida ao método sort() do objeto Array pode ser qualquer uma, desde que possua dois parâmetros e retorne -1 se o primeiro argumento for menor que o segundo, 1 se o primeiro argumento for maior que o segundo e 0 (zero) se os argumentos forem iguais. Assim, se quisermos ordenar em ordem decrescente, só precisamos alterar a forma como estas comparações são feitas. Veja: // função personalizada usada no auxílio da ordenação de // matrizes com valores numéricos function comparar(a, b){ if(a > b) Agora o resultado será: Elementos na ordem original: 5 - 3 - 19 - 21 - 74 - Elementos em ordem crescente: Esta dica foi escrita e testada no Internet Explorer 8 e Firefox 3.6. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de JavaScript |
Veja mais Dicas e truques de JavaScript |
Dicas e truques de outras linguagens |
Python - Como usar a biblioteca Pandas do Python em seus projetos de Data Science e Machine Learning |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |