Classifique uma matriz de objetos em JavaScript

Resumo : neste tutorial, você aprenderá como classificar um array de objetos pelos valores das propriedades do objeto.

Para classificar uma matriz de objetos, você usa o sort()método e fornece uma função de comparação que determina a ordem dos objetos.

Suponha que você tenha uma matriz de employeeobjetos como segue:

let employees = [
    {
        firstName: 'John',
        lastName: 'Doe',
        age: 27,
        joinedDate: 'December 15, 2017'
    },

    {
        firstName: 'Ana',
        lastName: 'Rosy',
        age: 25,
        joinedDate: 'January 15, 2019'
    },

    {
        firstName: 'Zion',
        lastName: 'Albert',
        age: 30,
        joinedDate: 'February 15, 2011'
    }
];
Linguagem de código:  JavaScript  ( javascript )

Classifique uma matriz de objetos por números

O trecho de instrução a seguir classifica a employeesmatriz agesem ordem crescente:

employees.sort((a, b) => {
    return a.age - b.age;
});
Linguagem de código:  JavaScript  ( javascript )

Para exibir os funcionários, você usa o forEach()método:

employees.forEach((e) => {
    console.log(`${e.firstName} ${e.lastName} ${e.age}`);
});
Linguagem de código:  JavaScript  ( javascript )

Saída:

Ana Rosy 25
John Doe 27
Zion Albert 30

Para ordenar os funcionários por idades em ordem decrescente, basta inverter a ordem na função de comparação. Por exemplo:

employees.sort((a, b) => b.age - a.age);

employees.forEach((e) => {
    console.log(`${e.firstName} ${e.lastName} ${e.age}`);
});
Linguagem de código:  JavaScript  ( javascript )

Saída:

Zion Albert 30
John Doe 27
Ana Rosy 25

Classifique uma matriz de objetos por strings

O snippet a seguir mostra como classificar os funcionários pelos primeiros nomes em ordem decrescente, sem distinção entre maiúsculas e minúsculas:

employees.sort((a, b) => {
    let fa = a.firstName.toLowerCase(),
        fb = b.firstName.toLowerCase();

    if (fa < fb) {
        return -1;
    }
    if (fa > fb) {
        return 1;
    }
    return 0;
});
Linguagem de código:  JavaScript  ( javascript )

Neste exemplo:

  • Primeiro, converta os nomes dos funcionários para letras minúsculas.
  • Segundo, compare os nomes e retorne -1, 1 e 0, dependendo da comparação da string.

O código a seguir mostra a saída:

employees.forEach((e) => {
    console.log(`${e.firstName} ${e.lastName}`);
});
Linguagem de código:  JavaScript  ( javascript )

Saída:

Ana Rosy
John Doe
Zion Albert    

Classifique uma matriz de objetos por datas

Para classificar os funcionários por datas de adesão, você precisa:

  • Converta as datas unidas de strings em objetos de data.
  • Classifique os funcionários por datas.

O código a seguir ilustra a ideia:

employees.sort((a, b) => {
    let da = new Date(a.joinedDate),
        db = new Date(b.joinedDate);
    return da - db;
});
Linguagem de código:  JavaScript  ( javascript )

E o código a seguir mostra a saída:

employees.forEach((e) => {
    console.log(`${e.firstName} ${e.lastName} ${e.joinedDate}`);
});
Linguagem de código:  JavaScript  ( javascript )

Saída:

Zion Albert Feb 15, 2011
John Doe December 15, 2017
Ana Rosy January 15, 2019

Neste tutorial, você aprendeu como classificar um array de objetos pelos valores das propriedades do objeto.

Deixe um comentário

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