JavaScript的高阶函数filter、map、reduce

//filter/map/reduce

//filter的参数是一个回调函数,回调函数必须返回一个布尔值
//回调函数会遍历数组中所有的函数
//true:当返回true时,函数内部会自动将这次回调的n加入到新数组中
//false:当返回false,函数内部会过滤掉这次n


//要求一:将数组nums里的元素,小于100的元素放入到一个新数组
const nums = [10, 20, 111, 222, 444, 40, 50]
//1filter函数的使用
let newNums = nums.filter(function (n) {
return n < 100
})

/*for (let i of newNums) {
console.log(i)
}*/
//-------------------------------------------------------------------------

//要求二:现在有个要求,将数组newNums里的每一个元素乘以2
//2map函数的使用
let newNums2 = newNums.map(function (n) {
return n * 2
})




/*for (let i of newNums2) {
console.log(i)
}*/

//-----------------------------------------------------------------------
//要求三:现在要求将数组newNums里的所有元素进行加总

//3reduce函数的使用,将数组里的元素进行汇总
//preValue代表当前回调函数里的数值,0代表preValue的初始值,n代表当前数组遍历的元素
let newNums3 = newNums.reduce(function (preValue, n) {
return preValue + n
}, 0)

console.log(newNums3)


//将这三个需求一次性解决

let total = nums.filter(function (n) {
return n < 100
}).map(function (n) {
return n * 2
}).reduce(function (preValue, n) {
return preValue + n
}, 0)

//console.log(total)

//箭头函数
let total2 = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n) => pre + n)
console.log(total2)
 

posted on 2020-10-29 06:56  catchsa  阅读(137)  评论(0)    收藏  举报

导航