Ant-design: 按文本长度或字母顺序排序的表格?

创建于 2016-05-20  ·  10评论  ·  资料来源: ant-design/ant-design

表排序器按长度而不是按字母顺序对文本字符串进行排序。 我不知道中文是怎么写的,但在欧美国家,文本的排序是按字母顺序进行的。

最有用的评论

最好使用 JavaScript String#localeCompare 函数:

排序器:(a, b) => { return a.title.localeCompare(b.title)},

所有10条评论

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

此页面是否有帮助?
0 / 5 - 0 等级