Ant-design: Tabellensortierung nach Textlänge oder alphabetisch?

Erstellt am 20. Mai 2016  ·  10Kommentare  ·  Quelle: ant-design/ant-design

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.

Hilfreichster Kommentar

Es wäre besser, die JavaScript-Funktion String#localeCompare zu verwenden:

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

Alle 10 Kommentare

[{
  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/

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen