当数组直接使用sort函数时,是按照数字编码进行排序
var arr = [1, 22, 15, 32, 4, 5]
arr.sort()//[1,15,22,32,4,5]
一般的正常用法是这样的
var arr = [1, 22, 15, 32, 4, 5]
arr.sort((a, b) => {return a - b}) // 升序排序 [1, 4, 5, 15, 22, 32]
arr.sort((a, b) => {return b - a}) // 降序排序 [32, 22, 15, 5, 4, 1]
//回调函数的格式为(a,b)=> { return xxx },ab为数组中任意两个数
sort函数的原理是,不会管a,b的大小,他只会比较 a - b 返回值的大小,如果
返回值大于0,a放在b的后面;
返回值小于0,a放在b的前面;
返回值等于0,ab位置不改变。
那么咱们看一下 a, b 以及返回值的所有情况
//当 a>b 时,
//a - b > 0 ,排序结果 ===> b,a (升序)
//b - a < 0 ,排序结果 ===> a,b (降序)
//当 b>a 时,
//a - b < 0 ,排序结果 ===> a,b (升序)
//b - a > 0 ,排序结果 ===> b,a (降序)
//当 a=b 时,
//a - b = b - a =0 , 排序结果 ===> 保持不变
不管怎么样,a - b 都是升序,b - a 都是降序