Antd Table列字符串排序+数字排序

在中后端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中, 数字在大写字母之前,
// 大写字母在小写字母之前.
// 其实很多时候,可以把所有字符统一大写或小写,排序时忽略大小写。