Matriz JavaScript para classificar

Resumo : neste tutorial, você aprenderá como usar o toSorted()método JavaScript Array para retornar um novo array com elementos ordenados.

Introdução ao método JavaScript Array toSorted

O Array.prototypepossui o sort()método que classifica os elementos em um array . No entanto, ele modifica o array original.

Às vezes, você não deseja alterar o array original, mas criar um novo com os elementos classificados. Neste caso, você pode usar o Array.prototype.toSorted()método.

Aqui está a sintaxe básica do toSorted()método:

array.toSorted(compareFn);Linguagem de código:  JavaScript  ( javascript )

Nesta sintaxe:

  • array: este é o array no qual você chama o método.
  • compareFn(Opcional): Esta é uma função que define a ordem de classificação. Se você omitir, o método toSorted() converterá os elementos do array em strings e os classificará de acordo com os valores de ponto de código Unicode de seus caracteres.

A compareFnfunção aceita dois argumentos ae bquais são o primeiro e o segundo elementos para comparação.

Espera compareFn-se que retorne um número negativo se afor classificado antes b, um número positivo se bfor classificado antes ae zero se a ordem de ae bnão importa.

A toSorted()função retorna um novo array com elementos classificados em ordem crescente.

O toSorted()método é genérico , o que significa que você pode chamá-lo em um objeto que não seja de array que possua a lengthpropriedade e propriedades com chave inteira.

Nesse caso, o toSorted() método faz o seguinte:

  • Primeiro, leia a  length propriedade do objeto.
  • Segundo, colete todas as propriedades existentes com chave inteira no intervalo de  0 to  length - 1.
  • Terceiro, classifique os elementos.
  • Finalmente, escreva os elementos em um novo array.

Exemplos de métodos JavaScript Array toSorted

Vamos explorar alguns exemplos de uso do toSorted()método JavaScript Array.

1) Usando o método toSorted() para retornar um novo array classificado de strings

O exemplo a seguir usa o toSorted()método para classificar uma matriz de strings:

const colors = ['red','green','blue'];
const sortedColors = colors.toSorted();

console.log(colors);
console.log(sortedColors);Linguagem de código:  JavaScript  ( javascript )

Saída:

['red', 'green', 'blue']
['blue', 'green', 'red']Linguagem de código:  JavaScript  ( javascript )

A saída indica que o array original ( colors) não muda, mas o array resultante ( sortedColors) possui elementos classificados.

2) Usando o método toSorted() para retornar uma nova matriz ordenada de números

O exemplo a seguir usa o toSorted()método para classificar uma matriz de números:

const scores = [3, 1, 2, 7, 9];
const sortedScores = scores.toSorted((a,b) => a - b);

console.log(scores);
console.log(sortedScores);Linguagem de código:  JavaScript  ( javascript )

Saída:

[3, 1, 2, 7, 9]
[1, 2, 3, 7, 9]Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, usamos o compareFnparâmetro que compara dois números para ordenar numericamente os elementos do scoresarray em ordem crescente.

Para classificar os números em ordem decrescente, altere o compareFnparâmetro da seguinte forma:

const scores = [3, 1, 2, 7, 9];
const sortedScores = scores.toSorted((a,b) => b - a);

console.log(scores);
console.log(sortedScores);Linguagem de código:  JavaScript  ( javascript )

Saída:

[3, 1, 2, 7, 9]
[9, 7, 3, 2, 1]Linguagem de código:  JavaScript  ( javascript )

Na compareFnfunção, usamos b - apara instruir a função que se bfor maior que a, ela retorna um valor positivo, fazendo com que bseja classificada antes a.

Como resultado, o toSorted()método classifica a matriz em ordem decrescente porque coloca os números maiores (valores mais altos de b) antes dos números menores (valores mais baixos de a).

3) Usando o método toSorted() para classificar um array de objetos por uma propriedade

O exemplo a seguir usa o toSorted()método para classificar uma matriz de livros por ano de publicação sem modificar a matriz original:

// Original array of books
const books = [
  { title: 'The Great Gatsby', author: 'F. Scott Fitzgerald', year: 1925 },
  { title: 'To Kill a Mockingbird', author: 'Harper Lee', year: 1960 },
  { title: '1984', author: 'George Orwell', year: 1949 },
  { title: 'Brave New World', author: 'Aldous Huxley', year: 1932 }
];

// Creating a sorted copy based on the publication year using toSorted()
const sortedBooks = books.toSorted((a, b) => a.year - b.year);

// Output the sorted copy and the original array
console.log(sortedBooks);Linguagem de código:  JavaScript  ( javascript )

Saída:

[
  { title: 'The Great Gatsby', author: 'F. Scott Fitzgerald', year: 1925},
  { title: 'Brave New World', author: 'Aldous Huxley', year: 1932 },
  { title: '1984', author: 'George Orwell', year: 1949 },
  { title: 'To Kill a Mockingbird', author: 'Harper Lee', year: 1960 }
]Linguagem de código:  JavaScript  ( javascript )

4) Chamando o método toSorted() em objetos não array

O exemplo a seguir ilustra como chamar o toSorted()método em um objeto que possui a lengthpropriedade e propriedades com chave inteira:

const arrayLike = {
  length: 3,
  unrelated: "foo",
  0: 5,
  2: 4,
  3: 3, // ignored by toSorted() since length is 3
};
console.log(Array.prototype.toSorted.call(arrayLike));
// [4, 5, undefined]Linguagem de código:  JavaScript  ( javascript )

5) Usando toSorted() em arrays esparsos

O exemplo a seguir chama o toSorted()método em uma matriz esparsa. O toSorted()método trata os slots vazios como se tivessem o valor undefined:

const skills = ['JS',,'Node.js'];
const sortedSkills = skills.toSorted();

console.log(sortedSkills);Linguagem de código:  JavaScript  ( javascript )

Saída:

['JS', 'Node.js', undefined]Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use o método JavaScript Array toSorted()para retornar um novo array cujos elementos são classificados sem modificar o array original.
  • O toSorted()método é genérico para que você possa chamá-lo em um objeto que não seja de array que possua a lengthpropriedade e propriedades com chave inteira.
  • Ao aplicar o toSorted()método a matrizes esparsas, ele itera através de slots vazios, tratando-os como se contivessem o valor indefinido.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *