高阶函数
一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数
一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数
高阶函数filter
filter用于过滤数组的元素。
filter用于过滤array中的一些值,通过带入的函数返回的ture 或false 保留或去除,返回一个新的array
var a = [1,2,3,4,5]
var b =[]
var fun = function(x)
{
return x%2 !== 0;
}
b = a.filter(fun)
alert(b)
判断筛选出array中的素数
1 //判断素数自定义函数;
2 function get_su(x){
3 if(x <=3){return x>1;}
4 if(x % 2 === 0 || x % 3 === 0){return false;}
5 for(var i = 5; i*i <= x; i +=6){
6 if(x % i ===0 || x%(i+2) ===0){
7 return false;
8 }
9 }
10 return ture;
11 }
12
13 var arr = [1,2,3,4,5,6,7,8,9,10];
14
15 //filter使用get_su(),筛选arr;
16 var su = arr.filter(get_su(x));
17 console.log(su);//[2, 3, 5, 7]
高阶函数map
map作用在数组的每个元素上的函数。
此时我们有一个数组和一个接受一个参数并返回一个数的函数。我们需要把这个数组的每一个值在这个函数上走一遍,从而得到一个新数组。此时就需要map了
var a = [1,2,3,4,5,6];
var b = []
var fun = function(x)
{
return x * x;
}
b = a.map(fun)
alert(b) //1 4 9 16 25 36
高阶函数reduce
Array
的reduce()
把一个函数作用在这个Array
的[x1, x2, x3...]
上,这个函数必须接收两个参数,reduce()
把结果继续和序列的下一个元素做累积计算,其效果就是:
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
var a = [1,2,3,4,5]
var b =[]
var fun = function(x,y)
{
return x+y;
}
b = a.reduce(fun)
alert(b) // 15