Este artigo descreve como o JS usa o Array.prototype.sort () para classificar objetos de matriz. Compartilhe para sua referência. A análise específica é a seguinte:
Ao falar em classificar objetos de matriz, vamos primeiro entender brevemente o Array.prototype.sort (). O método de classificação aceita um parâmetro - função. A função fornecerá dois parâmetros, respectivamente, dois elementos que são comparados. Se o elemento for string, ele será comparado através do código Unicode. Se for número, o tamanho do valor é comparado. Se 1 for retornado na função comparado, dois elementos serão trocados e 0 e -1 não serão trocados. Vamos dar uma olhada em um exemplo:
A cópia do código é a seguinte: var arr = [3, 5, 2, 1];
// Classificação de pequeno a grande
Arr.sort (função (a, b) {
retornar a> b? 1: -1;
});
// O resultado é: [1, 2, 3, 5]
Então, de volta ao nosso tópico, como devo escrevê -lo se eu classificar um objeto de matriz? De fato, o princípio é o mesmo que acima, como:
Copie o código da seguinte forma: var arr = [
{a: 2, b: 3.2},
{a: 3, b: 1.2},
{a: 4, b: 2.2},
{a: 6, b: 1.2},
{a: 5, b: 3.2}
]
/// classificado pelo atributo b de pequeno a grande
Arr.sort (função (x, y) {
retornar xb> yb? 1: -1;
});
X e Y são um elemento de ARR, ou seja, um objeto, para que você possa comparar diretamente as propriedades dos dois objetos.
No exemplo acima, existem duplicações no menor elemento. Se o requisito for: primeiro classificar de pequeno a grande de acordo com o atributo b e se houver duplicações no menor, então classifique o atributo A, como devo escrevê -lo?
Ao classificar, primeiro classificar por B atributo. Se Xb for maior que Yb, mova x para a direita de y. Se XB for igual a YB, compare -o com XA e YA. Portanto, o código é o seguinte:
Copie o código da seguinte forma: arr.sort (função (x, y) {
if (xb> yb) {
retornar 1;
} else if (xb === yb) {
retornar xa> ya? 1: -1;
} else if (xb <yb) {
retornar -1;
}
})
Espero que este artigo seja útil para a programação JavaScript de todos.