zoukankan      html  css  js  c++  java
  • 函数式编程Map()&Reduce()

    1.forEach():每个元素都调用指定函数,可传三个参数:数组元素丶元素索引丶数组本身丶
    
    var a = [1, 2, 3, 4, 5, 6, 7, 8];
    a.forEach(function(v,i,a){a[i]=v+1;});
    console.log(a);    //[2, 3, 4, 5, 6, 7, 8, 9]                     
    
    2.map():每个元素传递给指定函数,并返回该数组
    
    var b = [1, 2, 3, 4, 5, 6, 7, 8];
    console.log(    b.map(function(x){return x*x})    );    //[1, 4, 9, 16, 25, 36, 49, 64]
           
    
    3.filter():用于筛选数组里的元素    并返回满足的子集
    
    var c = [1, 2, 3, 4, 5, 6, 7, 8];
    console.log(    c.filter(function(x){return x>5}) );    //[6, 7, 8]
    console.log(    c.filter(function(x,i){return i%2==0}) );    //这里返回索引为偶数的数组元素
    
    4.every(),some():用于判断(全部/部分)数组里的元素    并返回bool
    
    var d = [1, 2, 3, 4, 5, 6, 7, 8];
    console.log(    d.every(function(x){return x>5})    );    //false
    console.log(    d.some(function(x){return x>5})    );        //true
    
    5.reduce():用指定函数将数组元素进行组合    生成并返回单个值
    
    var e = [1, 2, 3, 4, 5, 6, 7, 8];
    console.log(    e.reduce(function(x,y){return x+y},0)); //36 这里的0为传递给函数的初始值
    /* 
        这里内部运行方法为:
        0+1=1;1+2=3;3+3=6;6+4=10;10+5=15;15+6=21;21+7=28;28+8=36;
    */
    使用函数处理数组:
    
    /*1.计算平均值和标准差    */
    var sumFun = function(x,y){return x+y};
    var squFun = function(x){return x};
            
    var f = [1, 2, 3, 4, 5, 6, 7, 8];
    var avergae         = f.reduce(sumFun)/f.length;    
    console.log("平均值为:"+avergae);        //4.5
    var devitation     = f.map(function(x){return x-avergae})
    console.log("平均值差数组:"+devitation);    //-3.5,-2.5,-1.5,-0.5,0.5,1.5,2.5,3.5
            
       
    
    高阶函数:
    
    后面的还没看…待续…  
  • 相关阅读:
    Flex弹性盒模型
    响应式布局rem的使用
    京东首页如何实现pc端和移动端加载不同的html的?
    canvas绘制表盘时钟
    javascript实现ul中列表项随机排列
    使用 HTML5 视频事件
    Javascript获取当前鼠标在元素内的坐标定位
    移动 web 开发问题和优化小结
    关于fisher判别的一点理解
    机器学习第三课(EM算法和高斯混合模型)
  • 原文地址:https://www.cnblogs.com/nemoro1928/p/5377224.html
Copyright © 2011-2022 走看看