//filter/map/reduce
//filter的参数是一个回调函数,回调函数必须返回一个布尔值
//回调函数会遍历数组中所有的函数
//true:当返回true时,函数内部会自动将这次回调的n加入到新数组中
//false:当返回false时,函数内部会过滤掉这次n
//要求一:将数组nums里的元素,小于100的元素放入到一个新数组
const nums = [10, 20, 111, 222, 444, 40, 50]
//1、filter函数的使用
let newNums = nums.filter(function (n) {
return n < 100
})
/*for (let i of newNums) {
console.log(i)
}*/
//-------------------------------------------------------------------------
//要求二:现在有个要求,将数组newNums里的每一个元素乘以2
//2、map函数的使用
let newNums2 = newNums.map(function (n) {
return n * 2
})
/*for (let i of newNums2) {
console.log(i)
}*/
//-----------------------------------------------------------------------
//要求三:现在要求将数组newNums里的所有元素进行加总
//3、reduce函数的使用,将数组里的元素进行汇总
//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)