Js中几种高阶函数
如果一个函数接受一个或多个函数作为参数,或者可以返回一个参数,则这样的函数就叫高阶函数
常见的高阶函数 ,setInterval,setTimeout,sort
一般用于函数回调
例:
function foo(f){
if(f instanceof Function){
f();
}
}
foo(function(){
alert("asdf");
})
1.map:应用于数组,对数组进行操作
var arr = [1,9,4,16,25];
var arr2 = arr.map(function(x){
return x*2;
})
var arr3 = arr.map((Math.sqrt))
console.log(arr2); //[2,18,8,32,50]
console.log(arr3); //[1,3,2,4,5]
2.reduce 归纳的意思 作用是对数组的每个值求和积等操作
var arr = [1,2,3,4];
var arr2 = arr.reduce(function(a,ele,index){ //函数里面有四个参数,还有一个是array数组本身
return a*ele;
},1); //a的初始值为此时传入的参数,ele为每一个数组值,index为数组下标
console.log(arr2); // 24 即1*2*3*4
// 求10的阶乘
var arr3 = new Array(10);
arr3.fill(1); //填充数组里的值,每个都为1
console.log(arr3);
var arr4 = arr3.reduce(function(a,ele,index,array){
return a*(index+1);
},1);
console.log(arr4); //打印10的阶乘 3628800
3.filter 数组过滤
var arr = [1,2,3,4,5];
var a1 = arr.filter(function (ele,index,array){
return ele%2 == 1 //返回所有奇数,过滤了所有偶数
})
console.log(a1); //[1,3,5]