• JavaScript高阶函数 map reduce filter sort


    本文是笔者在看廖雪峰老师JavaScript教程时的个人总结
    高阶函数
               一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数
             1.高阶函数之map:
                        此时我们有一个数组和一个接受一个参数并返回一个数的函数。我们需要把这个数组的每一个值在这个函数上走一遍,从而得到一个新数组。此时就需要map了
                        var a = [1,2,3,4,5,6];
    var b = []
    var fun = function(x)
    {
        return x * x;
    }
    b = a.map(fun)
    alert(b)  //1 4 9 16 25 36
     
    2.高阶函数之reduce:
              此时我们有一个数组和一个接受两个参数并返回一个数的函数。我们需要把这个数组的每两个值在这个函数上走一遍变成一个值,然后再让这个值继续和下一个值走这个函数,最后从而得到一个值。此时就需要map了。 ilter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。可见用filter()这个高阶函数,关键在于正确实现一个“筛选”函数
              var a = [1,2,3,4,5]
    var b =[]
    var fun = function(x,y)
    {
        return x+y;
    }
    b = a.reduce(fun)
    alert(b) // 15
     
              3.高阶函数之filter:
                        此时我们有一个数组,这个数组里面有我们想要的也有我们不想要的,怎么办,我们可以下一个函数,让这些值在这个函数里面走一遍,想要的留下,不想要的去掉,返回一个只有理想数值的数组。此时需要filter
                        var a = [1,2,3,4,5]
    var b =[]
    var fun = function(x)
    {
        return x%2 !== 0;
    }
    b = a.filter(fun)
    alert(b)
     
    4.高阶函数之sort:
                这个就是之前数组里面提到的排序函数,这个也是一个高级函数,默认是从低到高。 通常规定,对于两个元素xy,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。我们可以传入一个函数,让sort从高到低排序
              var a = [3,2,5,1,4]
    var fun = function(x,y)
    {
        if(x<y)
            return 1
        if(x==y)
            return 0
        if(x>y)
            return -1
        //如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1
    }
    a.sort(fun)
    alert(a)  //5,4,3,2,1
    Arraysort()方法默认把所有元素先转换为String再排序 2 10排序会认为2比10大...
    所以可以传入一个函数修改一下
    var arr = [10, 20, 1, 2];
    arr.sort(function (x, y) {
        if (x < y) {
            return -1;
        }
        if (x > y) {
            return 1;
        }
        return 0;
    });
               sort()方法会直接对Array进行修改,它返回的结果仍是当前Array
     
  • 相关阅读:
    使用C# impersonation进行windows帐号的校验
    今天,如何将你现有的网站移动互联网化【译】
    吐槽一下拖延的生活状态
    Web前端开发工程师编程能力飞升之路【转】
    公司框架集成log4net时遇到的问题
    我所认知的电子商务解决方案
    Web开发攻城狮,欲善其事先利其器
    调用Web Service服务出现响应消息的内容类型text/html与绑定text/xml的内容类型不匹配
    服务器 '***' 上的 MSDTC 不可用
    Firefox中无法使用window.close()关闭窗口
  • 原文地址:https://www.cnblogs.com/magicroc/p/5938759.html
Copyright © 2020-2023  润新知