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.
[{
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/
Também existe uma solução como esta: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/Collator
Comentários muito úteis
Seria melhor usar a função JavaScript String # localeCompare:
classificador: (a, b) => {return a.title.localeCompare (b.title)},