高阶函数的使用

filter/map/reduce

这三个高阶函数都比较常用,一般代替for循环使用
filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
直接上代码演示
例如 求一个数组中小于10的元素,存到新的数组中去

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
    return  x<10  布尔值
});
r; // [1, 2, 4, 5, 6, 9]

以上案例filter里面的回调函数会依次将数组中的每个值执行一次,这个是执行8次,返回的是一个布尔值,如果是true的话直接加入到返回的新数组中,若为false将会自动过滤掉
简写

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(x=>x>10);
r; // [15]

map
map 函数的使用一般是用于映射关系
例如 返回一个两倍数的新数组

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.map(function (x) {
    return  x*2  
});
r//[2, 4, 8, 10, 12, 18, 20, 30]

简写

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.map(x=>x*2);
r// [2, 4, 8, 10, 12, 18, 20, 30]

reduce 一般使用场景最多为累加求和
例如 计算一个数组的和

var arr = [1, 2, 4, 5, 6, 9];
var r = arr.reduce(function (pre,n){
return pre+n  //pre 是前一个值的和n是后一个值
},0);
r//27
reduce 函数需要至少两个参数,一个是pre 代表的是前一个值的和
首先
pre+0=1+0
1+2=3
3+4=7
7+5=12
12+6=18
18+9=27

高阶函数的简写
例如
一个数组arr 找出小于100的数 进行乘以2,再求和
可以简写

const  arr=[10,20,50,40,30,120,111,450]
let   x=arr.filter(n=>n<100).map(n=>n*2).reduce((pre,n)=>pre+n)
x//300

你可能感兴趣的:(高阶函数的使用)