テーブルソーターは、テキスト文字列をアルファベット順ではなく長さで並べ替えています。 これが中国語でどのようになっているのかわかりませんが、ヨーロッパ系アメリカ人の国では、テキストの並べ替えはアルファベット順に行われます。
[{
title: 'age',
dataIndex: 'age',
sorter: (a, b) => a.age - b.age,
}]
独自のソートアルゴリズムを指定できます。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
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),
JavaScript String#localeCompare関数を使用することをお勧めします。
ソーター:(a、b)=> {return a.title.localeCompare(b.title)}、
この巧妙なソリューションのためのthx @ Leong21
日付を使用して列を並べ替える方法がまだわかりません。 私は次のようなことをしています:
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();
}
しかし、これは機能していません。 publishedAt
は、「」、または「2017年5月21日」や「2017年5月21日15:05」などの日付にすることができます。
@ghoshnirmalyaは、可能であればmoment.jsを使用してみてください。
ソーター:(a、b)=> {return moment(a.publishedAt).unix()-moment(b.publishedAt).unix()}
publicationAt == ""の状況を処理するには、次のことを試してください。
ソーター:(a、b)=> {return moment(a.publishedAt || 0).unix()-moment(b.publishedAt || 0).unix()}
@ Leong21ありがとうございます! それは期待どおりに機能します。
お疲れ様でした@ leong21
実際、localeCompare()メソッドは、現在のロケールの2つの文字列を比較します。
そしてそれはより良いでしょう
ソーター:(a、b)=> {return a.title.localeCompare(b.title)}、
@ Leong21ありがとうございます! これはここで説明または言及する必要があります: https :
最も参考になるコメント
JavaScript String#localeCompare関数を使用することをお勧めします。
ソーター:(a、b)=> {return a.title.localeCompare(b.title)}、