编程语言
首页 > 编程语言> > JavaScript高阶函数

JavaScript高阶函数

作者:互联网

filter函数

普通函数

const nums = [10,20,111,222,40,50]

遍历数组找出符合条件的数字
let newNums = []
for (let n of nums){
  if(n < 100){
    newNums.push(n)
  }
}
####使用filter高阶函数
filters函数
let newNums = nums.filter(function(n){
    return n < 100
})

map函数

普通函数方法

继续用for循环遍历newNums数组
let newNums2 = []
for (let n of newNums){
  newNums2.push(n*2)
}

使用map高阶函数

map函数代码
let newNums2 = newNums.map(function(n){
    return n * 2
})

reduce函数

普通函数方法

进行第3次遍历,遍历新数组newNums2
let total = 0
for (let n of newNums2){
  total += n
}

使用reduce高阶函数

reduce函数实现
let total = newNums2.reduce(function(prev,curr){    
    return prev + curr
},0)
不传入initialValue
let total = newNums2.reduce(function(pre,curr,index){
  console.log('pre:',pre,'curr:',curr,'index:',index)
  return pre + curr
})


可以看到,没有提供initialValue,index是从1开始(即索引为0的值跳过了)

传入initialValue = 0
let total = newNums2.reduce(function(pre,curr,index){
    console.log('pre:',pre,'curr:',curr,'index:',index)
    return pre + curr
},0)


可以看到,如果传入initialValue(一般设置为0),则index的值从0开始,而且第1次执行时,prev的值= initialValue

连续使用3次高阶函数
let total = nums.filter(function(n){
  return n < 100
}).map(function(n){
  return n * 2
}).reduce(function(pre,curr){
  return pre + curr
},0)

标签:pre,initialValue,curr,函数,JavaScript,let,prev,高阶
来源: https://www.cnblogs.com/lhj1168/p/15979520.html