22 - JavaScript函数式编程

JavaScript函数式编程

1》高阶函数:函数操作另外一个函数
		
		a)ForEach
		b)filter
var arr = ["A","B","C"];
function forEach(arr,fn){

    for(var i=0;i<arr.length;i++){

        fn(arr[i]);

    }
}
forEach(arr,function(value){


    console.log(value+"0");

});

forEach(arr,function(value){

    console.log("0"+value);

});
var arr = [2,3,4,5,6,7];

function filter(arr,fn){

    var brr = [];
    for(var i=0;i<arr.length;i++){

          if(fn(arr[i])){
              brr.push(arr[i]);
          }
    }
    return brr;

}

console.log(    filter(arr,function(value){

   return value>3;

})  );


console.log(    filter(arr,function(value){

    return value>5;

})  );
2》规约函数:通过一个函数调用另一个函数,将数组转换为单一的值
 	  a)Reduce   ==》将数组转换为单一的值(相加功能)最后返回一个结果
function Reduce(add,num,array){
    //add代表了函数(参数相加)
    //num ==》 2
    //array==》数组

    forEach(array,function(value){

        num = add(num,value);

        console.log(num);
    })

    return num;


}
function add(num1,num2){  //参数相加

    return num1+num2;
}


function forEach(arr,fn){   //把数组中的每一个值,循环出来,fn中传入实参

    for(var i=0;i<arr.length;i++){

        fn(arr[i]);
    }

}

var arr = [1,2,3,4,5];
alert(   Reduce(add,2,arr)    );
3》映射函数:会遍历数组,针对数组的每一个元素,调用指定的操作,然后将操作得出的值存储在另一个数组中,返回新的数组

	a)Map
function Map(fn,array){

    var brr = [];

    forEach(array,function(element){

        brr.push(fn(element))

    })

    return brr;
}

function forEach(arr,fn){

    for(var i=0;i<arr.length;i++){

        fn(arr[i]);
    }

}

console.log(  Map(Math.round,[1.1,2.2,3.3])  );
发布了25 篇原创文章 · 获赞 0 · 访问量 207

猜你喜欢

转载自blog.csdn.net/weixin_42746553/article/details/104477433
22