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>