Der Tabellensortierer sortiert Textzeichenfolgen nach Länge und nicht alphabetisch. Ich weiß nicht, wie das in chinesischer Sprache ist, aber in euroamerikanischen Ländern wird der Text alphabetisch sortiert.
[{
title: 'age',
dataIndex: 'age',
sorter: (a, b) => a.age - b.age,
}]
Sie können Ihren eigenen Sortieralgorithmus angeben. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
für die Sortierung nach Alpgavit:
function compareByAlph (a, b) {
if (a > b) {
return -1;
}
if (a < b) {
return 1;
}
return 0;
}
...
sorter: (a, b) => compareByAlph(a.lastName, b.lastName),
Es wäre besser, die JavaScript-Funktion String#localeCompare zu verwenden:
sorter: (a, b) => { return a.title.localeCompare(b.title)},
thx @Leong21 für diese clevere Lösung
Ich kann immer noch nicht herausfinden, wie wir Spalten mit Datumsangaben sortieren können. Ich mache sowas wie:
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();
}
Aber das funktioniert nicht. publishedAt
kann entweder "" oder ein Datum wie "21. Mai 2017" oder "21. Mai 2017 15:05 Uhr" sein.
@ghoshnirmalya versuche, wenn möglich, moment.js zu verwenden.
Sortierer: (a, b) => { return moment(a.publishedAt).unix() - moment(b.publishedAt).unix()}
Um die Situation zu handhaben, in der publishedAt == "" ist, versuchen Sie:
sorter: (a, b) => { return moment(a.publishedAt || 0).unix() - moment(b.publishedAt || 0).unix() }
@ Leong21 Danke! Das funktioniert wie erwartet.
Gute Arbeit @leong21
Tatsächlich vergleicht die Methode localeCompare() zwei Strings im aktuellen Gebietsschema.
und es wäre besser
sorter: (a, b) => { return a.title.localeCompare(b.title)},
@ Leong21 Danke! Dies sollte hier erklärt oder erwähnt werden: https://vue.ant.design/components/table/
Es gibt auch eine Lösung wie diese: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/Collator
Hilfreichster Kommentar
Es wäre besser, die JavaScript-Funktion String#localeCompare zu verwenden:
sorter: (a, b) => { return a.title.localeCompare(b.title)},