JavaScript Classifica a Matriz de Objetos em Ordem Alfabética

Ammar Ali 12 outubro 2023
  1. Classifique a matriz de objetos em ordem alfabética usando a condição if e a função sort() em JavaScript
  2. Classifique a matriz de objetos em ordem alfabética usando as funções localeCompare() e sort() em JavaScript
  3. Classifique a matriz de objetos em ordem alfabética usando as funções Collator() e sort() em JavaScript
JavaScript Classifica a Matriz de Objetos em Ordem Alfabética

Este tutorial irá discutir a classificação de um array de objetos em ordem alfabética usando a função sort() em JavaScript.

Classifique a matriz de objetos em ordem alfabética usando a condição if e a função sort() em JavaScript

Se tivermos um array de strings ou inteiros, podemos classificá-los facilmente usando a função sort() em JavaScript. Por exemplo, vamos classificar um array de strings em ordem alfabética usando a função sort(). Veja o código abaixo.

var a = ['banana', 'apple', 'orange'];
var m = a.sort();
console.log(m);

Resultado:

Array(3)
0: "apple"
1: "banana"
2: "orange"
length: 3

Como você pode ver, a matriz é classificada em ordem alfabética e o resultado é salvo na variável m. Se temos um array de objetos, temos que usar algumas condições antes de usar a função sort() para ordenar o array. Por exemplo, se temos um array de objetos contendo o nome e o sobrenome de algumas pessoas e queremos ordenar o array de acordo com o sobrenome das pessoas. Temos que passar uma função dentro da função sort(), que irá comparar o sobrenome de cada pessoa, e se o sobrenome da primeira pessoa for menor que o sobrenome da segunda pessoa, a função retornará um valor negativo, e se for maior, a função retornará valor positivo; e se ambos forem iguais, a função retornará zero. Veja o código abaixo.

var a = [
  {FirsName: 'Ellie', LastName: 'Williams'},
  {FirstName: 'Lara', LastName: 'Croft'}
];
function SortArray(x, y) {
  if (x.LastName < y.LastName) {
    return -1;
  }
  if (x.LastName > y.LastName) {
    return 1;
  }
  return 0;
}
var s = a.sort(SortArray);
console.log(s);

Resultado:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2

Como você pode ver, a matriz é classificada de acordo com o sobrenome. Você também pode aumentar o número de objetos dentro do array. Você também pode classificar a matriz de acordo com o primeiro nome.

Classifique a matriz de objetos em ordem alfabética usando as funções localeCompare() e sort() em JavaScript

Em vez de usar a condição if, você também pode usar a função localeCompare() para comparar as strings. Ele fornece muitas outras opções de comparação que você pode definir dentro da função. Por exemplo, vamos comparar a matriz de objetos acima usando a função localeCompare(). Veja o código abaixo.

var a = [
  {FirsName: 'Ellie', LastName: 'Williams'},
  {FirstName: 'Lara', LastName: 'Croft'}
];
function SortArray(x, y) {
  return x.LastName.localeCompare(y.LastName);
}
var s = a.sort(SortArray);
console.log(s);

Resultado:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2

A saída é a mesma do método acima. Você também pode definir a função para ignorar quaisquer pontuações e caracteres especiais durante a comparação. Por exemplo, se tivermos pontuação antes do sobrenome de uma pessoa, a função não classificará o array. Nesse caso, podemos usar a função localeCompare() e configurá-la para ignorar as pontuações durante a comparação. Veja o código abaixo.

var a = [
  {FirsName: 'Ellie', LastName: ',Williams'},
  {FirstName: 'Lara', LastName: 'Croft'}
];
function SortArray(x, y) {
  return x.LastName.localeCompare(y.LastName, 'fr', {ignorePunctuation: true});
}
var s = a.sort(SortArray);
console.log(s);

Resultado:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: ",Williams"}
length: 2

A matriz é classificada de acordo com o sobrenome, mesmo se houver uma pontuação presente. Você também pode ignorar caracteres especiais se eles estiverem presentes na string, definindo a sensibilidade da função localeCompare() como base, conforme mostrado abaixo.

x.LastName.localeCompare(y.LastName, 'en', {sensitivity: 'base'});

Verifique este link para obter mais detalhes sobre a função localeCompare().

Classifique a matriz de objetos em ordem alfabética usando as funções Collator() e sort() em JavaScript

Em vez de usar a condição if, você também pode usar a função Collator() para comparar as strings. Por exemplo, vamos comparar a matriz de objetos acima usando a função Collator(). Veja o código abaixo.

const collator = new Intl.Collator('en');
var a = [
  {FirsName: 'Ellie', LastName: 'Williams'},
  {FirstName: 'Lara', LastName: 'Croft'}
];
function SortArray(x, y) {
  return collator.compare(x.LastName, y.LastName);
}
var s = a.sort(SortArray);
console.log(s);

Resultado:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2

A saída é a mesma dos métodos acima. Você também pode alterar a ordem de classificação para decrescente, alterando o local dos dois argumentos na função collator.compare(). Você também pode usar a função Collator() para comparar strings de um idioma diferente; você só precisa inicializar o objeto intercalador com esse idioma. Por exemplo, no código acima, usamos en para o idioma inglês. Verifique este link para obter mais detalhes sobre a função Collator().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artigo relacionado - JavaScript Array