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]