filter/map/reduce 使用方法及小综合运用

filter/map/reduce 都是高阶函数(参数也是一个函数)

filter

nums = [1,2,3,88,22,343434,234];
//1.需求:小于100的数字
let newnums = nums.filter(function(n){
  return n<100                 
});

原理解释:传入n为22,22<100,返回值为true,n放入新数组中

filter中的回调函数有一个要求:必须返回布尔值

  • true:函数内部自动会将这次回调的n传入新数组中
  • false:函数内部会自动过滤掉这次的n

map

  //2.需求:将所有值*2
  let new2Nums = newnums.map(function(n){
    return n*2
  })

原理解释:传入n为1,n*2,再将返回值放入新数组中

reduce

  //3.需求:将所有值汇总
  let total =new2Nums.reduce(function(previousValue,n){
    return previousValue + n
  }0)

reduce 有两个参数

  1. previousValue是前一次循环的返回值
  2. n是当前传入的参数

原理解释

每一次的return值作为下一次previousValue值使用

  • 第一次:previousValue值为0,n为2
  • 第二次:previousValue值为100 n为4
  • 第三次:previousValue值为100 n为6

综合使用

  • 使用es6之前的function
  //函数式编程
 nums = [1,2,3,88,22,343434,234];
let total = nums.filter(function(n){
  return n < 100;
}).map(function(n){
  return n * 2;
}).reduce(function(previousValue,n){
  return previousValue + n;
},0)
  • 使用es6 箭头函数
  //函数式编程
 nums = [1,2,3,88,22,343434,234];
let total = nums.filter(n => n < 100;).map(n => n*2).reduce((previousValue,n) => previousValue + n)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值