zoukankan      html  css  js  c++  java
  • 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
     
  • 相关阅读:
    HDU 4709 3-idiots FFT 多项式
    多项式的黑科技
    JZYZOJ 2043 多项式除法和取余 NTT 多项式
    JZYZOJ 2042 多项式逆元 NTT 多项式
    网络爬虫(4)--正则表达式
    网络爬虫(3)--Beautiful页面解析
    网络爬虫(2)--异常处理
    网络爬虫(1)--准备工作
    PCL库配置出现的问题(WIN10+VS2013)
    QT笔记(1)--QT编程环境搭建
  • 原文地址:https://www.cnblogs.com/magicroc/p/5938759.html
Copyright © 2011-2022 走看看