js高阶函数filter、map、reduce

 1 // 高阶函数 filter/map/reduce
 2 
 3 // filter中的回调函数有一个要求:必须返回一个boolean值,
 4 // 当返回true时,函数内部会自动将这次回调的 n 加入到新的数组中
 5 // 当返回false时,函数内部会自动过滤掉这次的 n
 6 const nums=[10,20,60,94,348,57,24,674,645,44,4]
 7 let newNums = nums.filter(function (n){
 8   return n<30
 9 })
10 console.log("filter",newNums);
11 
12 //map
13 let newNums2 = newNums.map(function (n) {
14   return n * 2
15 })
16 console.log("map",newNums2);
17 
18 // reduce作用,对数组中的所有内容进行汇总 m赋值给prevalue,每次preValue为上次的preValue+n的值
19 let m=0;
20 let total = newNums2.reduce(function (preValue,n) {
21   return preValue + n
22 },m)
23 //newNums2=[20,40,48,8]有四个值,那就循环四次
24 // 第一次 :preValue=0    n=20
25 // 第二次 :preValue=20   n=40
26 // 第三次 :preValue=60   n=48
27 // 第四次 :preValue=108   n=8
28 // 第五次 :preValue=116
29 // 最后返回116赋值给 total
30 console.log(total);
31 console.log("*********高阶写法***************");
32 
33 let total2 = nums.filter(function (n) {
34   return n<30
35 }).map(function (n) {
36   return n*2
37 }).reduce(function (preValue,n) {
38   return preValue + n
39 },0)
40 
41 console.log(total2)
42 
43 console.log("更简单写法")
44 let total3 = nums.filter(n => n < 30).map(n => n * 2).reduce((pre, n) => pre + n);
45 console.log(total3)

猜你喜欢

转载自www.cnblogs.com/zwnsyw/p/12299889.html