ES6高阶函数----filter、map、reduce

filter

filter():创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素

filter()不会对空数组进行检测,不会改变原始数组

例如:想要数组中小于100的数字

  <script type="text/javascript">
    // filter(): 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
    // filter()不会对空数组进行检测,不会改变原始数组

    // filter()中的回调函数返回一个布尔值
    // 过滤掉arr1中小于100的数
    let arr1 = [10, 20, 30, 400, 500, 60, 70]
    let arr1res = arr1.filter(function (n) {
      return n < 100
    })
    console.log(arr1res);
  </script>

map

map():返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

map()不会对空数组进行检测,不会改变原始数组

例如:对arr1res数组中所有元素都×2

<script type="text/javascript">
	// map():返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
    // map()不会对空数组进行检测,不会改变原始数组

    // 将arr1res数组中每个元素✖2
    let arr2 = arr1res.map(function (n) {
      return n * 2
    })
     console.log(arr2)
  </script>
   

reduce

reduce():接受一个函数,对数组中元素进行累加,返回一个值

reduce()的回调函数接收两个参数,一个是上一个的值,一个是当前值

例如:对arr2中元素求和
第一次循环:prevalue初始值为0,n初始值为arr2[0]
第二次循环:prevalue的值为return的值,n为arr2[1]

<script type="text/javascript"> 
    // reduce():接受一个函数,对数组中元素进行累加,返回一个值
    // reduce()的回调函数接收两个参数,一个是上一个的值,一个是当前值
    
    // 对arr2中元素求和
    // 第一次循环:prevalue初始值为0,n初始值为arr2[0]
    // 第二次循环:prevalue的值为return的值,n为arr2[1]
    // ...
    let total = arr2.reduce(function (prevalue, n) {
      return prevalue + n
    }, 0)
    console.log(total);
  </script>

将filter、map、reduce混合使用

<script type="text/javascript">
    let res = arr1.filter(function (n) {
      return n < 100
    }).map(function (n) {
      return n * 2
    }).reduce(function (prevalue, n) {
      return prevalue + n
    }, 0)
    console.log(res);
  </script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值