js中的高阶函数

前言

函数式编程现在非常流行,本文将介绍javascript中常见的高阶函数。

介绍

对于高阶函数我的理解就是通过这些函数调用函数参数完成功能实现。

map

注意:map函数必须是数组才能调用。
例子:

	<script type="text/javascript">
		
		function test(s){
			var arr=s.split('');
			arr=arr.map(function(i){return i*1});
			return arr;
		}

		t=test('12345');
		console.log(t);//[ 1, 2, 3, 4, 5 ]
	</script>

结论
map函数可以遍历到数组中的元素然后在传入的函数参数中操作,最后返回的也是一个数组。

reduce

注意:reduce需要两个参数
例子:

	<script type="text/javascript">
		
		function test(s){
			var arr=s.split('');
			arr=arr.map(function(i){return i*1});
			return arr.reduce((x,y)=>{return x*10+y;});//这里的=>是使用了lambda表达式,等同于function(x,y){...}
		}

		t=test('12345');
		console.log(t);//12345
	</script>

结论
reduce一般可以用于求积运算,可以反复累积:
[1,2,3].reduce(f) = f(f(1,2),3);

every

例子:

<script type="text/javascript">
		
		function test(arr){
			return arr.every(x=>{return x==='a'});
		}

		console.log(test(['a','b','c']));//false,并不是每个元素都==='a'
	</script>

结论
every是判断函数里面的条件是否全部符合,全符合返回true,否则返回false;

find

例子:

	<script type="text/javascript">
		
		function test(arr){
			return arr.find(x=>{return x==='a'});
		}

		console.log(test(['a','b','c']));//a
	</script>

结论
当找到符合条件的元素find就会返回该元素,没有则是undefined。

findIndex

例子:

	<script type="text/javascript">
		
		function test(arr){
			return arr.findIndex(x=>{return x==='a'});
		}

		console.log(test(['a','b','c']));//0
	</script>

结论
返回的是find的元素的坐标,如果找不到则返回-1。

forEach

例子:

	<script type="text/javascript">
		
		function test(arr){
			return arr.forEach(x=>{console.log(x)});
		}

		test(['a','b','c']);
		//a
		//b
		//c
	</script>

结论
forEach与map很接近,但是forEach无法返回值,所以我在函数里面输出值。
而且已经有了for…of…语句代替之。

filter

例子:

	<script type="text/javascript">
		
		function test(arr){
			return arr.filter(x=>{return x%2===0;});
		}

		console.log(test([1,2,3,4,5,6,7,8,9,10]));//[ 2, 4, 6, 8, 10 ]
	</script>

结论
在filter中需要过滤掉就通过条件判断返回false,反之返回true显示。

sort

例子:

	<script type="text/javascript">
		
		function test(arr){
			return arr.sort((x,y)=>{return x<y?-1:1});
		}

		console.log(test([10,1,3,2,4,5,7,6,9,8]));//[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
	</script>

结论
sort中的规则基本上各个语言都是相同的,-1的话x与y的位置不换,1的话x与y调换位置。

总结

国庆快乐!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值