Ordenação de Array do JavaScript

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

Experimente Você Mesmo

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

Experimente Você Mesmo

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}); 

Experimente Você Mesmo

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}); 

Experimente Você Mesmo

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>

Experimente Você Mesmo

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()}); 

Experimente Você Mesmo

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

Experimente Você Mesmo

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

Experimente Você Mesmo

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);
}

Experimente Você Mesmo

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);
}

Experimente Você Mesmo

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;
}

Experimente Você Mesmo

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;
}

Experimente Você Mesmo

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});

Experimente Você Mesmo

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;
});

Experimente Você Mesmo