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: 11141 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:----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<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
numeros.sort();
// vamos exibir os elementos em ordem crescente
document.write('<br><br>Elementos em ordem crescente:<br>');
for(var i = 0; i < numeros.length; i++){
document.write(numeros[i] + ' - ');
}
</script>
</body>
</html>
Porém, ao executarmos este código teremos uma surpresa. O resultado será: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Elementos na ordem original: 5 - 3 - 19 - 21 - 74 - Elementos em ordem crescente: 19 - 21 - 3 - 5 - 74 - 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<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++){
document.write(numeros[i] + ' - ');
}
// vamos ordenar a matriz em ordem crescente
numeros.sort(comparar);
// vamos exibir os elementos em ordem crescente
document.write('<br><br>Elementos em ordem crescente:<br>');
for(var i = 0; i < numeros.length; i++){
document.write(numeros[i] + ' - ');
}
</script>
Agora o resultado será: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Elementos na ordem original: 5 - 3 - 19 - 21 - 74 - Elementos em ordem crescente: 3 - 5 - 19 - 21 - 74 - 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
// 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;
}
Agora o resultado será: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Elementos na ordem original: 5 - 3 - 19 - 21 - 74 - Elementos em ordem crescente: 74 - 21 - 19 - 5 - 3 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 |
|
Java - Como criar um Jogo da Velha em Java - Jogo completo com código fonte comentado - Versão console Revit C# - Como criar eixos no Revit via programação usando a função Create() da classe Grid da Revit C# API |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






