高阶函数 filter/map/reduce

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>高阶函数</title>
</head>
<body>
<script>
//
  const nums = [11, 222,444,55,66,23,90]
// 1、需求:取出所有小于100的值
//2、 需求:取出的小于100的值乘以2
// 3、 需求:上面的值相加

//之前的编程方法
//1、需求:取出所有小于100的值
//let newNums = []
//for(let i of nums){
//    if(i < 100){
//      newNums.push(i)
//    }
//}
//console.log(newNums);
////2、需求:取出的小于100的值乘以2
//let new2Nums = []
//for(let i of newNums){
//  new2Nums.push(i * 2)
//}
//console.log(new2Nums);
////3、需求:上面的值相加
//let total = 0
//for(let i of new2Nums){
//  total += i
//}
//console.log(total);

//高阶函数 filter/map/reduce
//1、filter里面的参数是一个函数,参数函数返回一个Boolean值,如果是true,则加入新数组,false则不加人
  let newNums = nums.filter(function (n) {
    return n <100
  })
console.log(newNums);
//map()
  let new2Nums = newNums.map(function (n) {
    return n * 2
  })
console.log(new2Nums);
  //reduce(函数参数(前一个值,值),参数2),汇总函数
  let total = new2Nums.reduce(function (preValue,n) {
    return preValue + n
  },0)
console.log(total);

  //要掌握的,阅读性强
let total2 = nums.filter(function (n) {
  return n < 100
}).map(function (n) {
  return n * 2
}).reduce(function (preValue,n) {
  return preValue + n
},0)
console.log(total2);

//箭头函数
  let total3 = nums.filter(n => n < 100).map(n => n * 2).reduce((preValue,n) => preValue + n)
console.log(total3);

</script>
</body>
</html>

 

posted @ 2020-08-21 21:57  CHUNYIN  阅读(148)  评论(0)    收藏  举报