Tutorial de JS

JS HOME Introdução JS JS Para onde Saída JS Declarações JS Sintaxe JS Comentários JS Variáveis ​​JS JS Let JS Const Operadores JS JS Aritmética Atribuição de JS Tipos de dados JS Funções JS Objetos JS Eventos JS Strings JS Métodos de string JS Pesquisa de String JS Modelos de String JS Números JS Métodos de número JS Matrizes JS Métodos de matriz JS Classificação de matriz JS Iteração de matriz JS Const da matriz JS Datas JS Formatos de data JS Métodos de obtenção de data JS Métodos de conjunto de datas JS JS Math JS Aleatório JS Booleanos Comparações JS Condições JS Interruptor JS Circuito JS para JS Loop Para Entrada JS Loop Para De JS Loop Enquanto Quebra de JS Iteráveis ​​JS Conjuntos JS Mapas JS Tipo JS de Conversão de tipo JS JS bit a bit JS RegExp Erros JS Escopo JS Içamento JS Modo estrito JS JS esta palavra-chave Função de seta JS Classes JS JS JSON Depuração JS Guia de estilo JS Práticas recomendadas de JS Erros de JS Desempenho JS Palavras reservadas JS

Versões JS

Versões JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Histórico de JS

Objetos JS

Definições de objeto Propriedades do objeto Métodos de objeto Exibição de objetos Acessadores de objetos Construtores de objetos Protótipos de Objetos Iteráveis ​​de objeto Conjuntos de objetos Mapas de objetos Referência do objeto

Funções JS

Definições de função Parâmetros de função Invocação de função Chamada de Função Função Aplicar Fechamentos de Função

Classes JS

Introdução à aula Herança de classe Classe Estática

JS Assíncrono

Retornos de chamada JS JS Assíncrono Promessas JS JS Async/Aguardar

JS HTML DOM

Introdução ao DOM Métodos DOM Documento DOM Elementos DOM HTML DOM Formulários DOM CSS DOM Animações DOM Eventos DOM Ouvinte de eventos DOM Navegação DOM Nós DOM Coleções DOM Listas de nós DOM

BOM do navegador JS

Janela JS Tela JS Localização JS Histórico de JS Navegador JS Alerta pop-up JS Temporização JS Cookies JS

APIs da Web JS

Introdução à API da Web API de formulários da Web API de histórico da web API de armazenamento da Web API do trabalhador da Web API de busca da Web API de geolocalização da Web

JS AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

JS JSON

Introdução JSON Sintaxe JSON JSON x XML Tipos de dados JSON Análise JSON JSON Stringify Objetos JSON Matrizes JSON Servidor JSON JSON PHP HTML JSON JSON JSONP

JS x jQuery

Seletores jQuery HTML jQuery jQuery CSS jQuery DOM

Gráficos JS

Gráficos JS Tela JS JS Plotly JS Chart.js JS Google Chart JS D3.js

Exemplos JS

Exemplos JS JS HTML DOM Entrada HTML JS Objetos HTML JS Eventos HTML JS Navegador JS Editor JS Exercícios JS Teste JS Certificado JS

Referências JS

Objetos JavaScript Objetos HTML DOM


Matrizes de classificação JavaScript


Classificando uma matriz

O sort()método classifica um array em ordem alfabética:

Exemplo

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

Revertendo uma matriz

O reverse()método inverte os elementos em uma matriz.

Você pode usá-lo para classificar uma matriz em ordem decrescente:

Exemplo

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

Classificação numérica

Por padrão, a sort()função classifica os valores como strings .

Isso funciona bem para strings ("Apple" vem antes de "Banana").

No entanto, se os números são classificados como strings, "25" é maior que "100", porque "2" é maior que "1".

Por causa disso, o sort()método produzirá um resultado incorreto ao classificar os números.

Você pode corrigir isso fornecendo uma função de comparação :

Exemplo

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

Use o mesmo truque para classificar uma matriz decrescente:

Exemplo

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});


A função de comparação

O objetivo da função de comparação é definir uma ordem de classificação alternativa.

A função de comparação deve retornar um valor negativo, zero ou positivo, dependendo dos argumentos:

function(a, b){return a - b}

Quando a sort()função compara dois valores, ela envia os valores para a função de comparação e classifica os valores de acordo com o valor retornado (negativo, zero, positivo).

Se o resultado for negativo aé classificado antes bde .

Se o resultado for positivo bé classificado antes ade .

Se o resultado for 0, nenhuma alteração será feita com a ordem de classificação dos dois valores.

Exemplo:

A função compare compara todos os valores na matriz, dois valores por vez (a, b).

Ao comparar 40 e 100, o sort()método chama a função de comparação(40, 100).

A função calcula 40 - 100 (a - b)e, como o resultado é negativo (-60), a função de classificação classificará 40 como um valor menor que 100.

Você pode usar este snippet de código para experimentar a classificação numérica e alfabética:

<button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
const 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>

Classificando uma matriz em ordem aleatória

Exemplo

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});


O Método Fisher Yates

O exemplo acima, array .sort(), não é preciso, ele favorecerá alguns números em detrimento de outros.

O método correto mais popular é chamado de Fisher Yates shuffle e foi introduzido na ciência de dados já em 1938!

Em JavaScript, o método pode ser traduzido para isso:

Exemplo

const points = [40, 100, 1, 5, 25, 10];

for (let i = points.length -1; i > 0; i--) {
  let j = Math.floor(Math.random() * i)
  let k = points[i]
  points[i] = points[j]
  points[j] = k
}


Encontre o valor de matriz mais alto (ou mais baixo)

Não há funções internas para encontrar o valor máximo ou mínimo em uma matriz.

No entanto, depois de classificar uma matriz, você pode usar o índice para obter os valores mais altos e mais baixos.

Ordenação crescente:

Exemplo

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

Ordenação decrescente:

Exemplo

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

Classificar uma matriz inteira é um método muito ineficiente se você deseja encontrar apenas o valor mais alto (ou mais baixo).


Usando Math.max() em um Array

Você pode usar Math.max.applypara encontrar o número mais alto em uma matriz:

Exemplo

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

Math.max.apply(null, [1, 2, 3])é equivalente a Math.max(1, 2, 3).


Usando Math.min() em um Array

Você pode usar Math.min.applypara encontrar o menor número em uma matriz:

Exemplo

function myArrayMin(arr) {
  return Math.min.apply(null, arr);
}

Math.min.apply(null, [1, 2, 3])é equivalente a Math.min(1, 2, 3).


Meus métodos JavaScript Mín./Máx.

A solução mais rápida é usar um método "feito em casa".

Esta função percorre um array comparando cada valor com o valor mais alto encontrado:

Exemplo (Localizar Max)

function myArrayMax(arr) {
  let len = arr.length;
  let max = -Infinity;
  while (len--) {
    if (arr[len] > max) {
      max = arr[len];
    }
  }
  return max;
}

Esta função percorre um array comparando cada valor com o valor mais baixo encontrado:

Exemplo (Encontrar Min)

function myArrayMin(arr) {
  let len = arr.length;
  let min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
}


Classificando Matrizes de Objetos

Matrizes JavaScript geralmente contêm objetos:

Exemplo

const cars = [
  {type:"Volvo", year:2016},
  {type:"Saab", year:2001},
  {type:"BMW", year:2010}
];

Mesmo que os objetos tenham propriedades de tipos de dados diferentes, o sort()método pode ser usado para classificar a matriz.

A solução é escrever uma função de comparação para comparar os valores da propriedade:

Exemplo

cars.sort(function(a, b){return a.year - b.year});

Comparar propriedades de string é um pouco mais complexo:

Exemplo

cars.sort(function(a, b){
  let x = a.type.toLowerCase();
  let y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});

Referência de matriz completa

Para uma referência completa do Array, acesse nosso:

Referência Completa de Matriz JavaScript .

A referência contém descrições e exemplos de todas as propriedades e métodos de Array.

Teste-se com exercícios

Exercício:

Use o método Array correto para classificar a fruitsmatriz em ordem alfabética.

const fruits = ["Banana", "Orange", "Apple", "Kiwi"];
;