Javascript: os dados json são classificados de acordo com um determinado campo

método

/*
 *  根据某个字段实现对json数组的排序
 * @param   array  要排序的json数组对象
 * @param   field  排序字段(此参数必须为字符串)
 * @param   reverse 是否倒序(默认为false)
 * @return  array  返回排序后的json数组
*/
function jsonSort(array, field, reverse) {
    // 数组长度小于2 或 没有指定排序字段 或 不是json格式数据
    if (array.length < 2 || !field || typeof array[0] !== "object") return array;
    // 数字类型排序
    if (typeof array[0][field] === "number") {
        array.sort(function (x, y) { return x[field] - y[field] });
    }
    // 字符串类型排序
    if (typeof array[0][field] === "string") {
        array.sort(function (x, y) { return x[field].localeCompare(y[field]) });
    }
    // 判断是否需要倒序
    if (reverse) {
        array.reverse();
    }
    return array;
}

pontos de conhecimento

localeCompare()

  • Definição e uso
    Compara duas strings em uma ordem específica de localidade.

  • gramática
    stringObject.localeCompare(target)

  • parâmetro

  • Valor de retorno
    Um número que indica o resultado da comparação. localeCompare() retorna um número menor que 0 se stringObject for menor que target. O método retorna um número maior que 0 se stringObject for maior que target. Este método retorna 0 se as duas strings forem iguais ou indistinguíveis de acordo com o agrupamento local.

    Comentários
    Quando os operadores < e > são aplicados a strings, eles comparam strings usando apenas a codificação Unicode dos caracteres, independentemente do agrupamento local. A ordem gerada dessa maneira não é necessariamente correta. Por exemplo, em espanhol, onde o caractere "ch" normalmente é ordenado como um caractere que ocorre entre as letras "c" e "d".

    O método localeCompare() fornece uma maneira de comparar strings, levando em consideração o agrupamento local padrão. O padrão ECMAscript não especifica como fazer operações de comparação específicas de localidade, ele apenas especifica que a função usa o agrupamento fornecido pelo sistema operacional subjacente.

  • organizar()

  • Definição e uso
    O método sort() é usado para classificar os elementos de um array .

  • gramática
    arrayObject.sort(sortby)

  • parâmetro

parâmetro descrever
ordenar por opcional. Especifica a ordem de classificação. Deve ser uma função.

  • valor de retorno
  • Uma referência à matriz. Observe que o array é classificado no array original, nenhuma cópia é feita.
  • ilustrar

       Se esse método for chamado sem parâmetros, os elementos da matriz serão classificados alfabeticamente, mais precisamente, na ordem da codificação de caracteres. Para fazer isso, os elementos da matriz devem primeiro ser convertidos em strings (se necessário) para comparação.

       Se você deseja classificar por outros critérios, precisa fornecer uma função de comparação, que compara dois valores e retorna um número que descreve a ordem relativa dos dois valores. A função de comparação deve ter dois parâmetros a e b, e seu valor de retorno é o seguinte:

  • Retorna um valor menor que 0 se a for menor que b, e a deve aparecer antes de b na matriz classificada.
  • Retorna 0 se a for igual a b.
  • Retorna um valor maior que 0 se a for maior que b.

reverter()

  • Definição e uso
    O método reverse() é usado para inverter a ordem dos elementos em um array.

  • gramática
    arrayObject.reverse()

  • Dicas e notas
    Observação: esse método altera o array original e não cria um novo array.

exemplo

Dados iniciais

 depois de classificar

 

 

 

Acho que você gosta

Origin blog.csdn.net/weixin_50114203/article/details/125641333
Recomendado
Clasificación