JavaScript的高阶函数 filter() | map( ) | reduce( );

在B站看视频自学Vue.js的过程中,我看了一个Up主的Vue.js的视频,虽然是根据老师录播的视频发布上去的,但是视频中授课的内容令我非常满意,老师上课讲的不仅是Vue.js的内容,还有像编程理念。我觉得应该是全B站最好的Vue.js的学习视频了!像我这种代码学渣也能学到不少东西,以下内容来自于一个B站Up主 ilovecoding 中的内容,然后是我自己总结的,如果某处有误,请大佬狠狠的批评指出!

 javaScrip高阶函数

filter | map | reduce

用实例去实践然后归纳总结才能记得住:
const newArr = [10,40,50,80,100,150,200];
1、需求:取出小于一百的数


没用高阶函数的之前的编程思路和做法

1 let newArr2 = [];
2 for(let i of newArr){
3   if(i < 100){
4     newArr2.push(i)
5   }
6 }
7 console.log(newArr2);

用高阶函数 filter() 可以理解成过滤器,根据条件返回一个boolean值来进行过滤

filter中的回调函数有一个要求:必须返回一个boolean值

    true:当返回true时,函数内部会自动将这次回调的n加入到新的数组中
    false:当返回false时,函数内部会自动过滤这次的 n

1 let newArr3 = newArr.filter(function(n){
2   return n < 100;
3 })
4 // 用高阶函数带箭头函数
5 let newArr4 = newArr.filter((n) => n < 100)
6 console.log(newArr3,newArr4);

 

2、需求:将所有小于100的数进行转化,全部* 2
没用高阶函数的之前的编程思路和做法

1 let newArr5 = [];
2   for(let n of newArr2){
3     newArr5.push(n * 2);
4   }
5 console.log(newArr5);

// 用高阶函数;map 可以理解为加工,根据条件变化加工成新的数组

1 let newArr6 = newArr2.map(function(n){
2     return n * 2;
3 })
4 console.log(newArr6);
5 // or
6 let newArr7 = newArr2.map((n) => n*2);
7 console.log(newArr7)

 

 

3、需求:将转化过的数组进行汇总
没用高阶函数的之前的编程思路和做法

1 let totalAll = 0;
2 for(let n of newArr7){
3     totalAll += n;
4 }
5 console.log(totalAll)

 

使用高阶函数 reduce() :可以理解为汇总 ,有人说它是递归,我也还没去深入理解 

1 let totalAll2 = newArr7.reduce(function(preavalue1,n){
2   return preavalue1 + n;
3 },0)
4 console.log(totalAll2);

 




// 还有将三个需求实现更简便的方法
// 链式编程

复制代码
let totalAll3 = newArr.filter(function(n){
    return n < 100;
}).map(function(n){
    return n * 2;
}).reduce(function(preVaule,iniValue){
    return preVaule + iniValue;
},0)

console.log(totalAll3);
复制代码

 

 接下来用更加简便的方法
箭头函数 其实是匿名函数的语法糖;

1 let totalAll4 = newArr.filter((n) => n < 100).map((n) => n*2).reduce((preVaule,iniValue) => preVaule + iniValue , 0)
2 console.log(totalAll4);

 

本文作者:小赖不赖

本文链接:https://www.cnblogs.com/lazyxlai/p/14381837.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   小赖不赖  阅读(178)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 这就是爱吗 杨胖雨
  2. 2 起风了 买辣椒也用券
  3. 3 星星在唱歌 司南
  4. 4 我记得 赵雷
起风了 - 买辣椒也用券
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.