高阶函数的使用
高阶函数 – 函数本身的参数也是一个函数
filter/map/reduce
filter
中的回调函数有一个要求:必须返回一个boolean值。
如果为true时,函数内部会自动将这次回调的n加入到新的数组中;如果返回的是false,则函数内部会过滤掉本次的n。
函数使用的示例代码:
// 1.filter函数的使用
const nums = [1,22,11,3,300];
// n是nums数组中的元素
let newNums = nums.filter(function (n) {
return n < 100; // 将大于100的元素加入到newNums新数组中
})
// 2.map函数的使用
// map() 不会改变原始数组
let new2Nums = newNums.map(function(n) {
return n * 2; // 将newNums数组中的每一个元素n,乘以2后,返回至new2Nums数组
})
// 3.reduce函数的使用
// 作用:对数组中所有的内容进行汇总
let total = new2Nmus.reduce(function (preValue, n) {
return preValue + n
},0)
// numsNums = [2,44,22,6]
// 第1次: preValue=0; n=2
// 第2次: preValue=0+2=2; n=44
// 第3次: preValue=2+44=46; n=22
// 第4次:preValue=46+22=68; n=6
简易写法
let total = newNums.filter(function (n) {
return n < 100;
}).map(function (n) {
return n * 2;
}).reduce(function (preValue, n) {
return preValue + n;
},0)
更简易写法:
let total = newNums.filter(n => n < 100).map(n => n*2).reduce((preValue, n) => preValue + n, 0);
// 或者 map函数里的操作,可以放到reduce函数里
let total = newNums.filter(n => n < 100).reduce((preValue, n) => preValue + n * 2, 0);