信子君

javascript三种常见高阶函数的使用

2019-01-18

三种函数名

  • filter
  • map
  • reduce

    一、filter()

    filter中的回调函数有一个要求:必须返回一个boolean值。若返回true时,函数内部将自动将这次回调加入新的数组中。filte()实现的是对数组对象中的每个元素进行判别,再把经过筛选后的数组对象返回

    filiter()与常规写法

    实现:取出所有小于100的数字

    const nums =[10,20,111,221,45,12];
    let newNums=[];
    for (let n of nums){
    if(n<100){
    newNums.push(n)
    }
    }
    console.log(newNums)
    let newNums =nums.filter(function(n){
    return n<100
    })
    console.log(newNums)

    输出结果

    1p9MS1.png

    二、map()

    map()接受一个函数参数,这个函数接受一个数组对象,map()实现的其实是遍历这个数组对象,对数组中每个元素进行操作

    map()与常规写法

    实现:将所有小于100的数字进行转化,并全部乘以2

    let newNums1=[]
    for (let n of newNums){
    newNums1.push(n*2)
    }
    console.log(newNums1)
    let newNums1=newNums.map(function(n){
    return n*2
    })
    console.log(newNums1)

    输出结果

    1pCdN4.png

    三、reduce()

    reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。 array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

1pP3Ie.png

reduce()与常规写法

实现:对所得数组进行汇总相加

let newNums2 =0
for(let n of newNums1){
newNums2+=n
}
console.log(newNums2)
let newNums2= newNums1.reduce(function(preValue,n){
return preValue+n
},0)
console.log(newNums2)

输出结果

1pPasP.png

三种函数结合

const nums = [10, 20, 111, 221, 45, 12];
let newNums2=nums.filter(function(n){
return n<100
}).map(function(n){
return n*2
}).reduce(function(preValue,n){
return preValue+=n
},0)
console.log("结果:",newNums2)

1pPLsx.png

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章