高阶函数map()
定义和用法:
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
<script>
// 需求:让数组内的数字乘以2返回新数组
var numbers = [4, 9, 16, 25];
var newNumbers=numbers
.map(item => item*2)
console.log(newNumbers) //打印结果[8,18,32,50]
</script>
高阶函数reduce()
定义和用法:
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
<script>
// 需求:求数组内所有数的和
var numbers = [4, 9, 16, 25];
var newNumbers=numbers
.reduce((total,item) => item+total)
console.log(newNumbers) //打印结果:54
</script>
高阶函数filter()
定义和用法:
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
<script>
// 需求:求数组内大于9的所有数
var numbers = [4, 9, 16, 25,33,24,13];
var newNumbers=numbers
.filter(item => item > 9)
console.log(newNumbers) //打印结果:[16,25,33,24,13]
</script>
三个高阶函数的混合应用
使用高阶函数进行函数式编程,代码非常优雅,以后可以多用高阶函数
<script>
// 需求:求数组内所有数乘以3后每个大于20的数的和
var numbers = [4, 9, 16, 25,33,24,13];
var newNumbers=numbers
.map(item=>item*3)
.filter(item=>item>20)
.reduce((pre,item) => pre+item)
console.log(newNumbers) //打印结果:360
</script>