美文网首页
怎样使用reduce()

怎样使用reduce()

作者: 曲昶光 | 来源:发表于2021-10-15 15:34 被阅读0次

    reduce()的基本概念

    定义:reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。 reduce() 对于空数组是不会执行回调函数的。

    分析:reduce()针对非空数组执行操作,接收一个回调函数,这个函数作为一个累加器,定义累加的规则,然后循环遍历进行累加,返回最终结果,需要注意该方法没有创建新数组,同时也不会改变原数组,返回的结果是一个数值(该数值根据返回结果而定)。

    语法

    arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
    

    参数
    callback:执行数组中每个值 (如果没有提供 initialValue则第一个值除外)的函数,包含四个参数:
    accumulator:累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(见于下方)。
    currentValue:数组中正在处理的元素。
    index 可选:数组中正在处理的当前元素的索引。 如果提供了initialValue,则起始索引号为0,否则从索引1起始。
    array 可选:调用reduce()的数组
    initialValue:作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

    常用的一些实例

    1.数组累加求和
    var arr= [0,1,2,3,4]
    var sum =arr.reduce((prev, cur)=> {
        return prev + cur;
    },0);
    console.log(sum)//10
    
    2.计算数组中元素出现的次数
    var arr = ['A', 'B', 'C', 'B', 'A'];
            var times = arr.reduce((pre,cur)=>{
            if(cur in pre){
                pre[cur]++
            }else{
                pre[cur] = 1 
            }
            return pre
            },{})
            console.log(times);//输出{A:2,B:2,C:1}  
    
    3.将二维数组转成一维
     var arr = [[0, 1], [2, 3], [4, 5]]
        var newArr = arr.reduce((pre,cur)=>{
            return pre.concat(cur)
        },[])
        console.log(newArr); // [0, 1, 2, 3, 4, 5]
    
    4.数组去重
    var arr = [1,2,3,4,4,1]
        var newArr = arr.reduce((pre,cur)=>{
            if(!pre.includes(cur)){
              return pre.concat(cur)
            }else{
              return pre
            }
        },[])
        console.log(newArr);// [1, 2, 3, 4]
    
    5.求数组项最大值
    var arr = [1,2,3,4,5,6]
    var max = arr.reduce((prev, cur)=> {
        return Math.max(prev,cur);
    });
    console.log(max);// 6
    

    相关文章

      网友评论

          本文标题:怎样使用reduce()

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