Ant-design: Classificação da tabela por comprimento do texto ou em ordem alfabética?

Criado em 20 mai. 2016  ·  10Comentários  ·  Fonte: ant-design/ant-design

O classificador de tabela está classificando as sequências de texto por comprimento e não em ordem alfabética. Não sei como é isso na língua chinesa, mas nos países da euro-americana a classificação do texto é feita em ordem alfabética.

Comentários muito úteis

Seria melhor usar a função JavaScript String # localeCompare:

classificador: (a, b) => {return a.title.localeCompare (b.title)},

Todos 10 comentários

[{
  title: 'age',
  dataIndex: 'age',
  sorter: (a, b) => a.age - b.age,
}]

Você pode especificar seu próprio algoritmo de classificação. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

para classificar por alpgavite:
function compareByAlph (a, b) { if (a > b) { return -1; } if (a < b) { return 1; } return 0; } ... sorter: (a, b) => compareByAlph(a.lastName, b.lastName),

Seria melhor usar a função JavaScript String # localeCompare:

classificador: (a, b) => {return a.title.localeCompare (b.title)},

thx @ Leong21 por esta solução inteligente

Ainda não consigo descobrir como podemos classificar as colunas usando datas. Estou fazendo algo como:

        sorter: (a, b) => {
          let dateA = !a.publishedAt
            ? new Date().getTime()
            : new Date(a.publishedAt).getTime();

          let dateB = !b.publishedAt
            ? new Date().getTime()
            : new Date(b.publishedAt).getTime();

          return [dateA, dateB].sort();
        }

Mas isso não está funcionando. publishedAt pode ser "" ou alguma data como "21 de maio de 2017" ou "21 de maio de 2017 3:05 PM".

@ghoshnirmalya tente usar moment.js se possível.

classificador: (a, b) => {momento de retorno (a.publishedAt) .unix () - momento (b.publishedAt) .unix ()}

para lidar com a situação em que postedAt == "" tente:
classificador: (a, b) => {momento de retorno (a.publishedAt || 0) .unix () - momento (b.publishedAt || 0) .unix ()}

@ Leong21 Obrigado! Isso funciona conforme o esperado.

Bom trabalho @ leong21
na verdade, o método localeCompare () compara duas strings na localidade atual.
e seria melhor
classificador: (a, b) => {return a.title.localeCompare (b.title)},

@ Leong21 Obrigado! Isso deve ser explicado ou mencionado aqui: https://vue.ant.design/components/table/

Esta página foi útil?
0 / 5 - 0 avaliações