高阶函数

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); // 依次打印每个元素

 
 




原文地址:https://www.cnblogs.com/ycyh1314/p/11175215.html