十一、高阶函数:filter、map、reduce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | /** *编程范式:命令式编程/声明式编程 *编程范式:面向对象编程(第一公民:对象)/函数式编程(第一公民:函数) **/ // const nums= [10,20,30,50,111,222,333,40,50]; // //1. 需求:取出所有小于100的数字 // let newNums = []; // for(let n of nums){ // if(n<100){ // newNums.push(n); // } // } // //2. 将所有小于100的数字进行转化:全部*2 // let new2Nums = []; // for(let n of new2Nums){ // if(n<100){ // newNums.push(n*2); // } // } // console.log(new2Nums); // //将所有的数字相加,得到最终结果 // let total = 0; // for(let n of new2Nums){ // total +=n; // } // console.log(total); //高阶函数:filter、map、reduce /** * filter中的回调函数有一个要求:必须返回一个boolean值 * true:当返回 true 时,函数内部会自动将这次回调的 n 加入到新的数组中 * false:当返回false时,函数内部会过滤掉这次的n * */ //结果:10 20 40 50 const nums = [10,20,111,222,444,40,50]; let newNums = nums.filter(function(n){ return n < 100 }); console.log(newNums); /** * map函数的使用 * */ //结果:20 40 80 100 let nuew2Nums = newNums.map(function(n){ return n * 2; }); console.log(nuew2Nums); /** * reduce函数的使用 * 作用:对数组中的所有内容进行汇总 * preValue参数:记录上次返回的结果的值 **/ // 第1次:preValue=0 n=20 // 第2次:preValue=20 n=40 // 第3次:preValue=60 n=80 // 第4次:preValue=140 n=100 // 结果:240 let totel = nuew2Nums.reduce(function(preValue, n){ return preValue + n; },0); console.log(totel); // 写法二 let total = nums.filter(function(n){ return n < 100; }).map(function(n){ return n * 2; }).reduce(function(preValue, n){ return preValue + n; },0); console.log(total); // 写法三 let total1 = nums.filter(n => n < 100) .map(n => n * 2) .reduce((pre,n)=> pre + n); console.log(total1); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现