前言
函数式编程现在非常流行,本文将介绍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调换位置。
总结
国庆快乐!