在中后端WEB app开发过程中经常遇到table列排序的问题,Antd table 提供了sorter的接口,我们可以根据各自项目特点拓展即可。
1.Number类型数据排序,官方提供了number类型排序的示例:
sorter: (a, b) => a.name.length - b.name.length
这个方法可以针对number类型的数据就行排序,但若遇到String类型则排序无效。
2. String类型数据排序:
sorter: (a, b) => { var stringA = a.name.toUpperCase(); // ignore upper and lowercase var stringB = b.name.toUpperCase(); // ignore upper and lowercase if (stringA < stringB) { return -1; } if (stringA > stringB) { return 1; } // names must be equal return 0; }
JavaScript 支持两个字符间的比较,它会根据字符的Unicode 码就行逐个对比(从左到右)。
此外,Javscript还针对array类型提供sort() 方法,对数组的元素进行排序,并返回数组(默认排序顺序是根据字符串Unicode码)。
示例:
var words = ['children', 'application', 'business']; words.sort(); // result ['application', 'business', 'children'] var scores = [1, 10, 21, 2]; scores.sort(); // result [1, 10, 2, 21] // 注意10在2之前, // 因为在 Unicode 指针顺序中"10"在"2"之前,其实可以简单理解为,它是从左往右逐个对比的结果。 var things = ['word', 'Word', '1 Word', '2 Words']; things.sort(); // result ['1 Word', '2 Words', 'Word', 'word'] // 在Unicode中, 数字在大写字母之前, // 大写字母在小写字母之前. // 其实很多时候,可以把所有字符统一大写或小写,排序时忽略大小写。