zoukankan      html  css  js  c++  java
  • js高阶函数(一)

    for循环

    filter()map()reduce()、链式编程、箭头函数

    filter()中的回调函数有一个要求,必须返回一个boolean值,
    true:当返回为true时,函数内部会自动将这次回调的n加入到新的数组中,
    false:当返回为false时,函数内部会过滤掉这次的n

    map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把Array的所有数字转为字符串

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']

    reduce()把一个函数作用在这个Array的[x1, x2, x3…]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算

    var arr = [1, 3, 5, 7, 9];
    arr.reduce(function (x, y) {
        return x + y;
    }); // 25

    高阶函数 filter/map/reduce的实例

    <script type="text/javascript">
    const num = [10,20,111,222,444,40,50]
    
    // 1,需求:取出所有小于100的数字
    
    // var num11 = [];
    // for(let n of num){
    //     if(n<100){
    //    num11.push(n)
    //  }
    // }
    
    
    // filter中的回调函数有一个要求,必须返回一个boolean值,
    // true:当返回为true时,函数内部会自动将这次回调的n加入到新的数组中,
    // false:当返回为false时,函数内部会过滤掉这次的n
    
    let num11 =num.filter(function(n){
    return n < 100
    })
    
    console.log(num11)
    
    
    // 2,需求:将所有小于100的数字进行转化:全部*2
    
    // var num22 = [];
    // for(let n of num11){
    //     num22.push(n*2)
    // }
    
    let num22 = num11.map(function(n){
    return n*2
    })
    console.log(num22)
    
    // 3,需求:将步骤2中所有的数字相加,得到最终的结果
    
    // var num33 = 0;
    // for(let n of num22){
    //     num33 +=n
    // }
    
    // reduce函数的使用
    // reduce作用对数组中的所有内容进行汇总
    // preval 上一次函数的返回值
    
    let num33 = num22.reduce(function(preval,n){
    return preval + n
    },0)
    console.log(num33)
    
    // 综合,链式编程
    // let total = num.filter(function(n){
    //     return n < 100
    // }).map(function(n){
    //     return n*2
    // }).reduce(function(preval,n){
    //     return preval + n
    // },0)
    // console.log(total)
    
    // 箭头函数
    // let total = num.filter(n => n<100).map(n => n*2).reduce((preval,n) => preval+n)
    // console.log(total)
    </script>

    参考:https://www.liaoxuefeng.com/wiki/1022910821149312/1023021271742944

  • 相关阅读:
    Java 中的 匿名类
    spring boot 中容器 Jetty、Tomcat、Undertow
    微信小程序-动态设置背景色navigationBarBackgroundColor的值
    vue el-tree:默认展开第几级节点
    safarai
    微信小程序-输入框输入文字后,将光标移到文字中间,接着输入文字后光标又自动跳到最后
    微信小程序-WebSocket应用
    微信小程序-聊天列表-角标
    SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data错误的解决
    button 去掉原生边框
  • 原文地址:https://www.cnblogs.com/hellocd/p/13584963.html
Copyright © 2011-2022 走看看