常用高阶函数

Posted qlongbg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用高阶函数相关的知识,希望对你有一定的参考价值。

什么是高阶函数:通俗理解就是一个函数接收另一个函数作为参数,这种函数就称之为高阶函数。

 

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]
console.log(results);

 

2.reduce 这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算

var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) 
    return x + y;
); // 25

3.filter 用于把Array的某些元素过滤掉,然后返回剩下的元素,返回新数组

把一个Array中的空字符串删掉,可以这么写:

var arr = [‘A‘, ‘‘, ‘B‘, null, undefined, ‘C‘, ‘  ‘];
var r = arr.filter(function (s) 
    return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
);
r; // [‘A‘, ‘B‘, ‘C‘]

可以巧妙地去除Array的重复元素:

var arr = [‘apple‘, ‘strawberry‘, ‘banana‘, ‘pear‘, ‘apple‘, ‘orange‘, ‘orange‘, ‘strawberry‘];

 var r = arr.filter(function (element, index, self)
    return self.indexOf(element) === index;
 );

console.log(r.toString());//apple,strawberry,banana,pear,orange

4.sort排序方法 字符串根据ASCII码进行排序  Arraysort()方法默认把所有元素先转换为String再排序

var arr = [10, 20, 1, 2];

  arr.sort(function (x, y)
    return x - y;   //从小到大排序;(y-x)从大到小排序
  );
  console.log(arr); // [1, 2, 10, 20]

5.every 方法可以判断数组的所有元素是否满足测试条件,返回true或false

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

ar 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 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 forEach()map()类似,它也把每个元素依次作用于传入的函数,但不会返回新的数组。forEach()常用于遍历数组,因此,传入的函数不需要返回值

 

 

  

 

以上是关于常用高阶函数的主要内容,如果未能解决你的问题,请参考以下文章

js里常用函数之高阶函数

进阶学习1:函数式编程FP——概念头等函数高阶函数常用高阶函数模拟

常用高阶函数

JavaScript之手撕常用数组高阶函数

6.3高阶函数常用内置函数

python常用的高阶函数