常用高阶函数
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码进行排序 Array
的sort()
方法默认把所有元素先转换为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()
常用于遍历数组,因此,传入的函数不需要返回值
以上是关于常用高阶函数的主要内容,如果未能解决你的问题,请参考以下文章