Neste exemplo, você aprenderá a escrever um programa JavaScript que classificará uma matriz de objetos por valores de propriedade.
Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação JavaScript:
- Array sort ()
- Array JavaScript
- Objetos JavaScript
Exemplo 1: Classificar matriz por nome de propriedade
// program to sort array by property name function compareName(a, b) ( // converting to uppercase to have case-insensitive comparison const name1 = a.name.toUpperCase(); const name2 = b.name.toUpperCase(); let comparison = 0; if (name1> name2) ( comparison = 1; ) else if (name1 < name2) ( comparison = -1; ) return comparison; ) const students = ((name: 'Sara', age:24),(name: 'John', age:24), (name: 'Jack', age:25)); console.log(students.sort(compareName));
Resultado
((nome: "Jack", idade: 25), (nome: "John", idade: 24), (nome: "Sara", idade: 24))
No programa acima, o sort()
método é usado para classificar um array pela propriedade name de seus elementos de objeto.
O sort()
método classifica seus elementos de acordo com os valores retornados por uma função de classificação personalizada (compareName neste caso).
Aqui,
- Os nomes das propriedades são alterados para maiúsculas usando o
toUpperCase()
método. - Se comparar dois nomes resultar em 1 , sua ordem será alterada.
- Se a comparação de dois nomes resultar em -1 ou 0 , a ordem será deixada como está.
Exemplo 2: Classificar Matriz por Idade da Propriedade
// program to sort array by property name function compareAge(a, b) ( return a.age - b.age; ) const students = ((name: 'Sara', age:24),(name: 'John', age:22), (name: 'Jack', age:27)); console.log(students.sort(compareAge));
Resultado
((nome: "John", idade: 22), (nome: "Sara", idade: 24), (nome: "Jack", idade: 27))
No programa acima, o sort()
método é usado para classificar um elemento da matriz pela propriedade age.
Para comparar a propriedade de idade de dois objetos, podemos simplesmente subtraí-los.
- Se a diferença for um valor negativo, sua ordem será alterada.
- Se a diferença for um valor positivo, a ordem será deixada como está.