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)