表排序器按长度而不是按字母顺序对文本字符串进行排序。 我不知道中文是怎么写的,但在欧美国家,文本的排序是按字母顺序进行的。
[{
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)},
感谢@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
可以是“”或诸如“21 May, 2017”或“21 May, 2017 3:05 PM”之类的日期。
如果可能, @ghoshnirmalya尝试使用 moment.js。
排序器:(a, b) => { return moment(a.publishedAt).unix() - moment(b.publishedAt).unix()}
为了处理publishedAt == ""的情况,请尝试:
排序器:(a, b) => { return moment(a.publishedAt || 0).unix() - moment(b.publishedAt || 0).unix() }
@Leong21谢谢! 这按预期工作。
干得好@leong21
实际上 localeCompare() 方法比较当前语言环境中的两个字符串。
这会更好
排序器:(a, b) => { return a.title.localeCompare(b.title)},
@Leong21谢谢! 这应该在这里解释或提到: https :
还有一个这样的解决方案: https :
最有用的评论
最好使用 JavaScript String#localeCompare 函数:
排序器:(a, b) => { return a.title.localeCompare(b.title)},