const arr = [1,2,40,60,111,3,60,555,20,61]
// 1.将数组中小于100的数字显示在一个新数组里
// 普通方法:
let newArr = []
for(let n of arr){
if(n<100){
push是将<100的n添加进newArr数组里
newArr.push(n)
}
}
console.log(newArr)
// 高阶函数filter
// filter(callback())中的回调函数的值只能是Boolean值
//当为true时:函数内部会自动将这次回调的n添加进新的数组
//当为false时:函数会过滤掉这次的n
let newArr = arr.filter(function(n){
return n < 100
})
console.log(newArr)// 2.将所有小于100的数进行转化,全部*2
// 普通方法:
let new2Arr = []
for(let n of newArr){
new2Arr.push(n * 2)
}
console.log(new2Arr)
//高阶函数map
let new2Arr = newArr.map(function(n){
return n*2
})
console.log(new2Arr)// 3.将所有小于100的数进行转化,全部*2之后相加求和
// 普通方法:
let total = 0
for(let n of new2Arr){
total += n
}
console.log(total)
// 高阶函数reduce:作用是对数组中所有的内容进行汇总
let total = new2Arr.reduce(function(preValue,n){
return preValue + n
},0)
//reduce循环过程
//第一次 preValue:0 n:2
//第二次 preValue:2 n:4
//第三次 preValue:6 n:80
//...以此类推,最后计算出最终结果
console.log(total) //三个高阶函数同时实现
let total = arr.filter(function(n){
return n < 100
}).map(function(n){
return n * 2
}).reduce(function(preValue,n){
return preValue + n
},0)
console.log(total)