廖老师JavaScript教程高阶函数-sort用法

先来学习一个新词:高阶函数

高阶函数英文叫Higher-order function。那么什么是高阶函数?

JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

排序算法

       排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素xy,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。 

先来看一段代码:

  

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>Document</title>
 9 </head>
10 
11 <body>
12     <script>
13         var arr = [1, 10, 100, 2, 22];
14 
15         arr.sort(function (x, y) {
16             if (x > y) {
17                 return 1;
18             }
19             if (x < y) {
20                 return -1;
21             }
22             return 0;
23         })
24         console.log(arr);
25     </script>
26 </body>
27 
28 </html>

注意:JavaScript的Arraysort()方法就是用于排序的,它的原理是根据ASCII码进行排序,而小写字母ASCII码在大写字母之后。

上面代码解释:

  原本sort也是一个函数,只因它是高阶函数,它可以接收一个函数作为参数,称之为高阶函数,编写高阶函数,就是让函数的参数能够接收别的函数。

  函数中的x,y分别代表数组中的两个元素,依次做比较,如果x>y,就把x放右边,y放左边,意思就是从小到大的排序,一轮之后,看看返回的数组为:[1,10,2,22,100];

显然这个数组也不是我们想要的结果,它会再次把这个新数组做一轮比较,这次返回的结果就是[1,2,10,22,100]。因为咱们这个数组比较简单,这个比较也是我简化之后

的,其实内部比较也是这个原理,这个作为参数的函数,会把数组里相邻的两个元素进行比较,x>y,x放右边,再接着x和它相邻的另一个元素比较,x<y,把x依次放在左边,

相邻的两个元素要一直做比较,做对比,直到这个数组按照一定的规则排序完成,这个比较才会结束。

初学廖老师课程,记录一下学习心得。

原文地址:https://www.cnblogs.com/wangtao-/p/9443540.html