本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
聊聊Javascript 常见的高阶函数
BilyLiang · 168浏览 · 发布于2021-09-08 +关注

高阶函数,英文叫 Higher Order function。一个函数可以接收另外一个函数作为参数,这种函数就叫做高阶函数。


高阶函数,英文叫 Higher Order function。一个函数可以接收另外一个函数作为参数,这种函数就叫做高阶函数。

示例:

function add(x, y, f) { 
 return f(x) + f(y); 
} 

//用代码验证一下: 
add(-5, 6, Math.abs); // 11

    一、常见的高阶函数

    ES6中数组新增了几种方法,其中 map、reduce、filter 几个都是高阶函数,除此,普通的sort也是高阶函数。分别介绍下新增的三个方法。

    1.1、filter

    filter 是过滤数组,返回满足条件的数据,组成一个新的数组返回,不满足条件的被丢弃。

    实例1:取出数组中小于 100 的数据,放到一个新数组中

    let grad = [ 102, 188, 55, 66, 200, 800 ] 
    let arr2 = grad.filter( function(item){ 
     return item <= 100 
    }) 
    console.log("arr2",arr2)// 55, 66

      上述实例中,filter传入的参数是一个函数,传入的函数依次作用于每个元素,然后根据返回值是 true 或 false 决定保留还是丢弃元素。因为只有 55 66 两个满足条件,所以新的数组中只有这两个元素。

      1.2、map

      map 是映射的意思。

      原数组被映射成一个新的数组,返回值是一个新数组,不改变原来的数组。新的数组与原数组的长度是不会改变的。

      实例2:给数据每个元素放大 2 倍。

      let arr2 = [ 55, 66 ] 
      let arr3 = arr2.map( item => { 
       return item*2 
      }) 
      //返回结果 [ 110, 132 ]

        上述实例,map接收的参数是一个函数,该函数依次作用于每个元素,对元素放大了2倍,也可以对其进行任意的复杂操作。

        1.3、reduce

        reduce 是对数组进行汇总的,往往进去一个数组,出来是一个数据。经常用于求和和计算平均值。

        实例3:对上个实例返回的结果进行求和。

        let sum = arr3.reduce((tmp,item)=>{ 
         return tmp+item 
        }) 
        //返回结果 242

          重点来了,如果我们想把上边三个实例合并到一起执行,最终我们可以写得有多简单呢?

          // 复杂写法 
          let grad = [102,188,55,66,200,800] 
          let arr2 = grad.filter(function(item){ 
           return item <= 100 
          }) 
          let arr3 = arr2.map(item=>{ 
           return item*2 
          }) 
          let sum = arr3.reduce((tmp,item)=>{ 
           return tmp+item 
          }) 
          
          //简单写法 
          let sum2 = grad 
                     .filter( item => {return item <= 100}) 
                    .map(item=>{return item*2}) 
                    .reduce((tmp,item)=>{return tmp+item})


            相关推荐

            RN开发环境的npm私库本地debug调试

            manongba · 696浏览 · 2019-05-09 17:03:46
            你不知道的浏览器渲染原理

            追忆似水年华 · 1372浏览 · 2019-05-09 22:47:56
            基于iview的router常用控制方式

            追忆似水年华 · 994浏览 · 2019-06-03 10:39:21
            编程小知识之 JavaScript 文件读取

            manongba · 715浏览 · 2019-06-10 09:16:16
            10个省时间的 PyCharm 技巧 赶快收藏!

            · 701浏览 · 2019-06-10 09:32:01
            加载中

            0评论

            评论
            我是湖南最靓仔的那条仔,希望来到这里能够交道志同道合的朋友,一起学习,不断进步!!!
            分类专栏
            小鸟云服务器
            扫码进入手机网页