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){
forEach(array,function(value){
num = add(num,value);
console.log(num);
})
return num;
}
function add(num1,num2){
return num1+num2;
}
function forEach(arr,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]) );