JavaScript理解笔记——高阶函数

高阶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


高阶函数抽象能力特别强,且核心代码可保持的非常简洁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值