Penyortir tabel mengurutkan string teks berdasarkan panjangnya bukan berdasarkan abjad. Saya tidak tahu bagaimana ini dalam bahasa Cina tetapi di negara-negara euro amerika penyortiran teks dilakukan menurut abjad.
[{
title: 'age',
dataIndex: 'age',
sorter: (a, b) => a.age - b.age,
}]
Anda dapat menentukan algoritme pengurutan Anda sendiri. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
untuk mengurutkan berdasarkan 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),
Akan lebih baik menggunakan fungsi JavaScript String#localeCompare:
penyortir: (a, b) => { kembalikan a.title.localeCompare(b.title)},
thx @Leong21 untuk solusi cerdas ini
Saya masih tidak tahu bagaimana kita bisa mengurutkan kolom menggunakan Dates. Saya melakukan sesuatu seperti:
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();
}
Tapi ini tidak bekerja. publishedAt
dapat berupa "" atau beberapa tanggal seperti "21 Mei 2017" atau "21 Mei 2017 15:05".
@ghoshnirmalya coba gunakan moment.js jika memungkinkan.
penyortir: (a, b) => { kembali momen(a.publishedAt).unix() - momen(b.publishedAt).unix()}
untuk menangani situasi di mana publishingAt == "" coba:
penyortir: (a, b) => { kembali momen(a.publishedAt || 0).unix() - momen(b.publishedAt || 0).unix() }
@Leong21 Terima kasih! Itu bekerja seperti yang diharapkan.
Kerja bagus @ leong21
sebenarnya Metode localeCompare() membandingkan dua string di lokal saat ini.
dan itu akan lebih baik
penyortir: (a, b) => { kembalikan a.title.localeCompare(b.title)},
@Leong21 Terima kasih! Ini harus dijelaskan atau disebutkan di sini: https://vue.ant.design/components/table/
Ada juga solusi seperti ini: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/Collator
Komentar yang paling membantu
Akan lebih baik menggunakan fungsi JavaScript String#localeCompare:
penyortir: (a, b) => { kembalikan a.title.localeCompare(b.title)},