js参考---sort函数 js参考---sort函数

一、总结

一句话总结:

sort函数不同浏览器的实现不一样,所以具体的排序算法的原理也不一样,一样的就是如果返回a-b,则升序,返回b-a,则降序

1、sort函数参数对应的回调函数的两个形参的作用是什么?

接收排序时候传递过来的实参:sort函数里面的回调函数需要两个形参,来接收浏览器排序时候传递过来的实参,不同浏览器的排序算法不同,所以传递给形参的值也不相同

2、不同浏览器sort函数的共性是什么?

sort函数不同浏览器的实现不一样,所以具体的排序算法的原理也不一样,一样的就是如果返回a-b,则升序,返回b-a,则降序

二、sort函数

博客对应课程的视频位置:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             /*
 9              * 即使对于纯数字的数组,使用sort()排序时,也会按照Unicode编码来排序,
10              *     所以对数字进排序时,可能会得到错误的结果。
11              * 
12              * 我们可以自己来指定排序的规则
13              *     我们可以在sort()添加一个回调函数,来指定排序规则,
14              *         回调函数中需要定义两个形参,
15              *         浏览器将会分别使用数组中的元素作为实参去调用回调函数
16              *         使用哪个元素调用不确定,但是肯定的是在数组中a一定在b前边
17              *     - 浏览器会根据回调函数的返回值来决定元素的顺序,
18              *         如果返回一个大于0的值,则元素会交换位置
19              *         如果返回一个小于0的值,则元素位置不变
20              *         如果返回一个0,则认为两个元素相等,也不交换位置
21              * 
22              *     - 如果需要升序排列,则返回 a-b
23              *         如果需要降序排列,则返回b-a
24              */
25             arr = [5,4,2,1,3,6,8,7];
26             
27             arr.sort(function(a,b){
28                 
29                 //前边的大
30                 /*if(a > b){
31                     return -1;
32                 }else if(a < b){
33                     return 1;
34                 }else{
35                     return 0;
36                 }*/
37                 
38                 //升序排列
39                 //return a - b;
40                 
41                 //降序排列
42                 return b - a;
43                 
44             });
45             
46             console.log(arr);
47             
48         </script>
49     </head>
50     <body>
51         
52     </body>
53 </html>