美文网首页
js高阶函数reduce() 常见案例

js高阶函数reduce() 常见案例

作者: 储锋 | 来源:发表于2018-12-20 16:35 被阅读0次

    基本概念

    reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。
    reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。

    语法

    arr.reduce(callback,[initialValue])
    callback (执行数组中每个值的函数,包含四个参数)
    previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
    currentValue (数组中当前被处理的元素)
    index (当前元素在数组中的索引)
    array (调用 reduce 的数组)
    initialValue (作为第一次调用 callback 的第一个参数。)

    案例

    1.简单的计算求和

    let num = [1,5,8,10],
         initialValue =10,
        callback = (previousValue,currentValue)=> previousValue+currentValue
        res = num.reduce(callback),
        res1 = num .reduce(callback,initialValue)
    console.log(res) //24
    console.log(res1) //34
    

    2.求最小值和最小值的索引号

    let num = [100,50,1,5,8,10],
            callback = (previousValue,currentValue,index) => {
            if(currentValue<previousValue.val){
                previousValue.val = currentValue;
                previousValue.index = index;
            }
            return previousValue
            },
        minVal = num.reduce(callback,{val:num[0],index:0});
        console.log(minVal);//{index: 2,val: 1}
    

    3.计算字符串中每个字符的出现次数

    let srtRepeat = [..."abcdaabcaadd"].reduce((res, cur)=> {
            res[cur] ? res[cur] ++ : res[cur] = 1
            return res;
        }, {})
        console.log(srtRepeat); //{a: 5,b: 2,c: 2,d: 3}
    

    相关文章

      网友评论

          本文标题:js高阶函数reduce() 常见案例

          本文链接:https://www.haomeiwen.com/subject/ntijkqtx.html