十一、高阶函数: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);             

  

posted @   搬砖工具人  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示