• 高阶函数


    JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

     1、map(),(将数组里的每一项作为参数传给参数函数)

      function pow(x) {

        return x * x;
     }
     var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
     var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
    2、reduce(),(Array的reduce()把一个函数作用在这个Array[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算)
      例如:求和运算
      var arr = [1, 3, 5, 7, 9];
      arr.reduce(function (x, y) {
          return x + y;
      }); // 25
    3、filter(),
    它用于把Array的某些元素过滤掉,然后返回剩下的元素。和map()类似,Arrayfilter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素
      var arr = [1, 2, 4, 5, 6, 9, 10, 15];
      var r = arr.filter(function (x) {
          return x % 2 !== 0;
      });
      r; // [1, 5, 9, 15]
    4、sort(),排序算法

      arr.sort(function (x, y) {
        return (x - y)  //从小到大排序

        return(y - x)  //从大到小排序
      });

    5、every(),可以判断数组的所有元素是否满足测试条件

      var arr = ['Apple', 'pear', 'orange'];
      console.log(arr.every(function (s) {
        return s.length > 0;
      })); // true, 因为每个元素都满足s.length>0

      console.log(arr.every(function (s) {
        return s.toLowerCase() === s;
      })); // false, 因为不是每个元素都全部是小写

     6、find(),用于查找符合条件的第一个元素,如果找到了,返回这个元素,否则,返回undefined

      var arr = ['Apple', 'pear', 'orange'];
      console.log(arr.find(function (s) {
        return s.toLowerCase() === s;
      })); // 'pear', 因为pear全部是小写

      console.log(arr.find(function (s) {
        return s.toUpperCase() === s;
      })); // undefined, 因为没有全部是大写的元素

      7、findIndex(),find()类似,也是查找符合条件的第一个元素,不同之处在于findIndex()会返回这个元素的索引,如果没有找到,返回-1

      var arr = ['Apple', 'pear', 'orange'];
      console.log(arr.findIndex(function (s) {
        return s.toLowerCase() === s;
      })); // 1, 因为'pear'的索引是1

      console.log(arr.findIndex(function (s) {
        return s.toUpperCase() === s;
      })); // -1

    8、forEach(),map()类似,它也把每个元素依次作用于传入的函数,但不会返回新的数组。forEach()常用于遍历数组,因此,传入的函数不需要返回值

      var arr = ['Apple', 'pear', 'orange'];
      arr.forEach(console.log); // 依次打印每个元素

     
     




  • 相关阅读:
    Docker化高可用redis集群
    机器学习理论研究方法探讨
    (转载)iOS系统Crash文件分析方法
    ios 学习总结之动画(转)
    (转)iOS sqlite :truncate/delete/drop区分
    (转载)自定义 setDateFormat 显示格式
    (转载)IOS中UIScrollView的属性和委托方法
    vue 实现分页加载数据
    深入理解JQuery插件开发
    博客迁移到GitCafe
  • 原文地址:https://www.cnblogs.com/ycyh1314/p/11175215.html
Copyright © 2020-2023  润新知