Ordenação de Array do JavaScript
- Página Anterior Procurar Array JS
- Próxima Página Iteração de Array JS
sort()
O método é um dos métodos mais poderosos do array.
Ordenação de array
sort()
O método ordena o array em ordem alfabética:
Exemplo
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ordena os elementos no array fruits
Inverter array
reverse()
O método inverte os elementos do array.
Você pode usá-lo para ordenar arrays em ordem decrescente:
Exemplo
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ordena os elementos no array fruits fruits.reverse(); // Inverte a ordem dos elementos
ordenação numérica
Por padrão,sort()
A função ordenastringsordem para ordenar os valores.
A função é muito adequada para strings ("Apple" ficará antes de "Banana").
No entanto, se os números forem ordenados como strings, "25" é maior que "100", porque "2" é maior que "1".
Por isso,sort()
O método pode gerar resultados incorretos ao ordenar números.
Nós passamos por umFunção de comparaçãoPara corrigir este problema:
Exemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Use a mesma técnica para ordenar arrays em ordem decrescente:
Exemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Função de comparação
O objetivo da função de comparação é definir outra ordem de classificação.
A função de comparação deve retornar um valor negativo, zero ou positivo, dependendo dos parâmetros:
function(a, b){return a-b}
Quando sort()
Quando a função compara dois valores, ela envia esses valores para a função de comparação e ordena esses valores com base no valor retornado (negativo, zero ou positivo).
Exemplo:
Quando comparando 40 e 100,sort()
O método chama a função de comparação function(40,100).
A função calcula 40-100 e retorna -60 (valor negativo).
A função de ordenação colocará 40 em um valor mais baixo do que 100.
Você pode usar o seguinte trecho de código para testar a ordenação numérica e alfabética:
<button onclick="myFunction1()">Ordernar por letra</button> <button onclick="myFunction2()">Ordernar por número</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
Para ordenar o array em ordem aleatória:
Exemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Procurar o maior (ou menor) valor do array
O JavaScript não fornece uma função integrada para encontrar o maior ou menor valor de um array.
No entanto, após ordenar o array, você pode usar os índices para obter o valor mais alto ou mais baixo.
Ordenação crescente:
Exemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Agora points[0] contém o valor mais baixo // E points[points.length-1] contém o valor mais alto
Ordenação decrescente:
Exemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Agora points[0] contém o valor mais alto // E points[points.length-1] contém o valor mais baixo
Se você precisar apenas encontrar o valor mais alto ou mais baixo, ordenar todo o array é um método extremamente ineficiente.
para usar Math.max() no array
Você pode usar Math.max.apply
para encontrar o valor mais alto do array:
Exemplo
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
igual a Math.max(1, 2, 3)
.
para usar Math.min() no array
Você pode usar Math.min.apply
para encontrar o valor mais baixo do array:
Exemplo
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
igual a Math.min(1, 2, 3)
.
Meus métodos Min / Max em JavaScript
A solução mais rápida é usar o método 'feito por nós próprios'.
Esta função percorre o array, comparando cada valor com o valor mais alto encontrado:
Exemplo (procurar Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Esta função percorre o array, comparando cada valor com o valor mais baixo encontrado:
Exemplo (procurar Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Ordenar arrays de objetos
Os arrays JavaScript frequentemente contêm objetos:
Exemplo
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Mesmo que os objetos tenham atributos de tipos de dados diferentes,sort()
Este método ainda pode ser usado para ordenar arrays.
A solução é comparar os valores dos atributos usando uma função de comparação:
Exemplo
cars.sort(function(a, b){return a.year - b.year});
A comparação de atributos de strings é um pouco mais complexa:
Exemplo
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- Página Anterior Procurar Array JS
- Próxima Página Iteração de Array JS