高阶map():
map()定义在JavaScript的array中。
首先定义一个函数:function pow(x){
return x*x;}
在定义一个变量 var arr=[1,2,3,4,5];
var result= arr.map(pow);
结果为:result=[1,4,9,16,25]
函数map()传入的参数是 函数pow(函数对象本身)
高阶reduce():
array的reduce()把一个函数作用在这个array的[x,y,z]上,该函数必须接受两个 参数,reduce()将结果继续和序列的下一个元素做累计计算。
效果:[x1,x2,x3].reduce(f) = f(f(x1,x2),x3)
高阶filter():
可以把array的某些元素过滤掉,返回剩下的元素。
只接收一个函数,
与map不同,filter()把传入的函数依次作用于每个元素,根据返回值是true还是false决定保留或丢弃该元素。
filter()在于实现筛选、去重功能。
(去重 与indexof()结合使用:此方法返回元素第一次出现的位置。)
回调函数:
filter()接受的回调函数,可以有多个参数,通常仅仅使用第一个参数,表示array的某个元素。回调函数还可以接受另外两个参数,表示元素的 位置 和 数组本身。
var arr=[’a’,’b’,’c’];
var r=arr.filter(function(element,index,self){
console.log(element); //打印‘a’,‘b’,‘c’
console.log(index); //打印0,1,2
console.log(self); //self 就是变量arr
return true;
});
sort :
排序算法:通过函数抽象出来:x〈y,返回-1;x==y,返回0;x〉y,返回1。
sort()默认把所有元素转换为sring再根据ASC2码进行排序。
sort()也是高阶函数,可接受一个比较函数实现自定义排序。
sort()会直接对array进行修改,返回的结果仍是当前array。
例如:对数字排序
var arr=[1,2,5,3,4];
arr.sort(function(x,y){
if(x<y){return -1;}if(x>y){return 1;}return 0;});
console.log(arr); //1,2,3,4,5
高阶函数抽象能力特别强,且核心代码可保持的非常简洁。
JavaScript理解笔记——高阶函数
最新推荐文章于 2023-08-20 11:30:48 发布