常用高阶函数

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

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()常用于遍历数组,因此,传入的函数不需要返回值

  

猜你喜欢

转载自www.cnblogs.com/qlongbg/p/11577667.html
今日推荐