zoukankan      html  css  js  c++  java
  • 几个常用高阶函数(es6)

    1.filter

      1: const nums = [10, 20, 111, 222, 444, 40, 50];

    需求:取出小于100的数

      1: //每次回调函数时自动填入形参n,第一次是10,第二次是20...
    
      2: //filter中回调函数必须返回一个boolean值
    
      3: //当返回true时,函数内部会自动将这次回调的n加入到新的数组中
    
      4: //当返回false时,就会过滤掉n
    
      5: let newNums = nums.filter(function (n) {
    
      6: // n小于100的结果就是true,大于等于就是false
    
      7:   return n < 100
    
      8: });
    
      9: console.log(newNums);
    
     10: // newNums=[10,20,40,50]

    2.map

    需求:将新的数组里面全部的数乘以2

      1: //相同的是回调函数必须返回值,返回的值替代n
    
      2: let newNums2 = newNums.map(function (n) {
    
      3:   return n*2
    
      4: });
    
      5:   console.log(newNums2);
    
      6: // newNums2=[20,40,80,100]


    3.reduce

    需求:求数组里面所有值的和

      1: // reduce将数组里面的所有内容汇合处理。
    
      2: // 第一个参数是上一次返回的值,第二个参数是这次使用的值
    
      3: // 将回调函数视为第一个参数,第二个参数(也就是0)是初始值
    
      4: let newNums3 = newNums2.reduce(function (preValue, n) {
    
      5:   return preValue + n
    
      6: }, 0);
    
      7: console.log(newNums3);
    
      8: // newNums3=240

    最后可以一次复合写完最后的需求。

      1: let total = nums.filter(function (n) {
    
      2:   return n<100
    
      3: }).map(function (n) {
    
      4:   return n*2
    
      5: }).reduce(function (preValue, n) {
    
      6:   return preValue + n
    
      7: }, 0);
    
      8: console.log(total);

    es6语法一句话写完。

      1: let total2 = nums.filter(n => n<100).map(n => n*2).reduce((pre, n) => pre+n);
    
      2:   console.log(total2);

    在别的语言这几个函数也是类似的功能。

  • 相关阅读:
    Python趣味小问题——用积分思想计算圆周率
    通过自动化测试发现缺陷
    Xcodebuild稳定性测试go脚本
    Google软件测试之道笔记与总结
    PHP打印日志类
    Python3用多线程替代for循环提升程序运行速度
    卡死进程检杀工具
    ECharts饼图自定义
    解决bootstrap-table表头filter-control select控件被遮挡显示不全的问题
    Html表格和表头文字不换行
  • 原文地址:https://www.cnblogs.com/haoqirui/p/13276708.html
Copyright © 2011-2022 走看看