<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>高阶函数</title>
</head>
<body>
<script>
//
const nums = [11, 222,444,55,66,23,90]
// 1、需求:取出所有小于100的值
//2、 需求:取出的小于100的值乘以2
// 3、 需求:上面的值相加
//之前的编程方法
//1、需求:取出所有小于100的值
//let newNums = []
//for(let i of nums){
// if(i < 100){
// newNums.push(i)
// }
//}
//console.log(newNums);
////2、需求:取出的小于100的值乘以2
//let new2Nums = []
//for(let i of newNums){
// new2Nums.push(i * 2)
//}
//console.log(new2Nums);
////3、需求:上面的值相加
//let total = 0
//for(let i of new2Nums){
// total += i
//}
//console.log(total);
//高阶函数 filter/map/reduce
//1、filter里面的参数是一个函数,参数函数返回一个Boolean值,如果是true,则加入新数组,false则不加人
let newNums = nums.filter(function (n) {
return n <100
})
console.log(newNums);
//map()
let new2Nums = newNums.map(function (n) {
return n * 2
})
console.log(new2Nums);
//reduce(函数参数(前一个值,值),参数2),汇总函数
let total = new2Nums.reduce(function (preValue,n) {
return preValue + n
},0)
console.log(total);
//要掌握的,阅读性强
let total2 = nums.filter(function (n) {
return n < 100
}).map(function (n) {
return n * 2
}).reduce(function (preValue,n) {
return preValue + n
},0)
console.log(total2);
//箭头函数
let total3 = nums.filter(n => n < 100).map(n => n * 2).reduce((preValue,n) => preValue + n)
console.log(total3);
</script>
</body>
</html>