zoukankan      html  css  js  c++  java
  • 廖老师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依次放在左边,

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

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

  • 相关阅读:
    spring boot welcome-file-list
    spring boot web.xml listener
    Linkflow CDP
    连接数据,构建中台,Linkflow如何推动数据化浪潮 CDP
    客户全生命周期服务解决方案的提供商。
    自然语言处理的发展历史 发展方向 行业(法律)
    SpringBoot 设置 profiles 并在其他配置文件里面读取 pom.xml
    SpringBoot 配置文件无法解析占位符
    微服务 SaaS 低代码开发平台
    混沌工程与分布式系统
  • 原文地址:https://www.cnblogs.com/wangtao-/p/9443540.html
Copyright © 2011-2022 走看看