用sort()方法实现数字英文排序,用localeCompare()方法实现中文排序。
一、定义
sort():用于数组元素的排序,默认按字母顺序排序(更精确地说,按字符编码顺序)。
- 如果要按照其他标准进行排序,就需要提供比较函数,该函数有两个参数a和b,需要比对两个值,再返回一个说明两个值相对顺序的结果。
1.a-b < 0,返回一个小于0的值,升序排序;
2.a-b > 0,返回一个大于0的值,降序排序;
3.a-b = 0,返回0。
localeCompare() :用本地特定的顺序来比较两个字符串。
- 语法:stringObject.localeCompare(target)
- 参数:target,要以本地特定顺序与stringObject比较的字符串
- 返回值:说明比较结果的数字
1.stringObject < target,返回小于0的数;
2.stringObject > target,返回大于0的数;
3.stringObject = target,返回0。
二、用法
- 默认排序:
var arrList = ['rocket', 'moonsir', 'calorie', 'girls', 'light', 'summer']
var sort = arrList.sort()
console.log(sort) // ["calorie", "girls", "light", "moonsir", "rocket", "summer"]
var arrList = ['101', '11', '2020', '0623', '2']
var sort = arrList.sort()
console.log(sort) // ["0623", "101", "11", "2", "2020"]
- 按数字排序:
1.升序排序:
var arrList = ['101', '11', '20', '12', '2', '1']
var sort = arrList.sort((a,b) => {
return a-b
})
console.log(sort) // [ "1", "2", "11", "12", "20", "101"]
2.降序排序:
var arrList = ['101', '11', '20', '12', '2', '1']
var sort = arrList.sort((a,b) => {
return b-a
})
console.log(sort) // ["101", "20", "12", "11", "2", "1"]
- 中文汉字按拼音排序:
var arrList = ['苹果', '香蕉', '猕猴桃', '葡萄', '桃子','草莓']
var sort = arrList.sort((a,b) => {
return a.localeCompare(b)
})
console.log(sort) // ["草莓","猕猴桃", "苹果", "葡萄", "桃子", "香蕉"]
除了以上的基础用法,还可以拓展到根据数组对象中的某个属性排序以及根据不同需求封装一套排序方法,下一篇将对排序的拓展使用进行总结。