JavaScript编程精解——高阶函数

高阶函数其实就是一个函数,将另外一个函数做为参数或者(函数)返回值,简单说,就是一个函数操做了另外一个函数;数组

function a(n){        
        return function b(m){return m>n}     
    }     
    var funA = a(10);     
    console.log(funA(8));     
    //false

你没看错这是一个闭包,也是一个高阶函数,在函数a中将函数b做为返回值; 下面咱们来看一下JavaScript固有的高阶函数:闭包

  • reduce reduce的调用方法:array.reduce(fun); //array是一个数组;fun是一个函数,仅接收两个参数; reduce函数的做用:按个人理解,reduce函数对数组中的每一个元素根据必定条件(fun函数约定的条件)进行操做,最后返回一个值,fun函数接收两个参数,fun(a,b),是array的第一个和第二个元素,根据条件进行运算,返回的结果一次对array的第三个,直到最后一个元素进行运算,并返回最后结果。
[1,2,5,6,7,8,9].reduce(function(a,b){
        return a+b;
    });
    //38 (返回数组之和)
     [1,2,5,6,7,8,9].reduce(function(a,b){
        if(a>b){
            return a;
        }else{
            return b;
        }
    });
    //9   (返回最大值)

经过这两个例子,能够看出reduce是对数组的一个累计计算的操做;能够举个例子: var list= [1,2,5,6,7,8,9]; 对数组求和: 首先咱们能够设定一个变量,让他依次和数组中的每一个元素累加,最后得出这个变量的值就是数组的和,ok,show me the code: function sum(list,result){ for(var i=0;i<list.length;i++){ result +=list[i]; } return result; } console.log(sum(list,0)); //38函数

  • filter filter函数的做用,简单来讲是过滤数组,返回一个知足条件的数组:筛选出数组中符合条件的元素,组成一个新数组,并返回; array.filter(fun); [1,2,5,6,7,8,9].filter(function(a){ return a>6; });
  • map array.map(fun); map与filter相似,数组通过必定的条件(fun函数),对数组中每一个对应的元素进行操做后,返回新的数组; 与filter的区别:map返回的是数组元素与原数组的元素不相同(值和类型均可能不一样);map返回的数组的元素个数与原数组相等; 来个例子吧:
[1,2,5,6,7,8,9].map(function(a){
    return a+6;
});
// [7, 8, 11, 12, 13, 14, 15]  (返回的新数组)

多说一句,通过试验,map函数接收三个参数,array.map(fun(item,i,curList){ //item 为当前数据; //i 为索引值(0开头); //curList 为数组,即array; })code

[1,2,5,6,7,8,9].map(function(item,i,curList){
       console.log(item,i,curList);
});
  • sort sort是对函数进行从新排序; array.sort(fun); fun接收两个参数,fun是排序遵循的条件;来个例子吧:
[7, 64, 131, 1, 3, 14, 5].sort(function(a,b){
    return a-b;   //按升序排列数组
    //return b-a;   //按降序排列数组
})
//[1, 3, 5, 7, 14, 64, 131]   (执行结果)
// [131, 64, 14, 7, 5, 3, 1]  (按降序排列执行的结果)
  • reverse 对当前数组进行倒序排列,返回新数组; [1, 3, 5, 7, 14, 64, 131] 数组的降序也能够写成:[1, 3, 5, 7, 14, 64, 131] .reverse()
[1, 3, 5, 7, 14, 64, 131] .reverse();
//[131, 64, 14, 7, 5, 3, 1]

差很少就这么多吧,有什么不到的地方还请你们多指教,😆排序

相关文章
相关标签/搜索