Js中sort排序函数原理

375 阅读1分钟

当数组直接使用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((ab) => {return a - b}) // 升序排序 [1, 4, 5, 15, 22, 32]
arr.sort((ab) => {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 ,排序结果 ===> ba (升序)
//b - a < 0 ,排序结果 ===> ab (降序)

//当 b>a 时,
//a - b < 0 ,排序结果 ===> ab (升序)
//b - a > 0 ,排序结果 ===> ba (降序)

//当 a=b 时,
//a - b = b - a =0 , 排序结果 ===> 保持不变

不管怎么样,a - b 都是升序,b - a 都是降序