美文网首页
JS reduce函数

JS reduce函数

作者: 百分百空手接白刃_566c | 来源:发表于2019-09-25 21:36 被阅读0次

    定义和用法

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

    array.reduce(function(prev, cur, currentIndex, arr), initialValue)
    :param function(prev, cur, index, arr) 必需。用于执行每个数组元素的函数。
    函数参数:
        prev:   必需。初始值, 或者计算结束后的返回值。
        cur:  必需。当前元素
        currentIndex:  可选。当前元素的索引
        arr:  可选。当前元素所属的数组对象。
    :param initialValue: 可选。传递给函数的初始值
    

    注意:没有第二个参数的时候prev初始值默认为数组的第一项,此时循环从数组的第二项开始,有第二个参数的时候prev为第二个参数值,此时循环从数组的第一项开始。

    常见应用:

    1. 求和:
    const arr = [15, 19, 10, 14, 26, 8];
    const total = arr.reduce((prev, cur) => {
        return prev + cur
    })
    console.log(total)//数组的和
    
    2. 求平均
    const arr = [15, 19, 10, 14, 26, 8];
    const avg= arr.reduce((prev, cur, index, array) => {
         prev += cur
         if( index === array.length-1) { 
            return prev/array.length;
          }else { 
            return prev;
          } 
    })
    
    3. 求元素出现的次数
    const arr = ['banana', 'cherry', 'orange', 'apple', 'cherry', 'orange', 'apple', 'banana', 'cherry', 'orange', 'fig' ];
    const total = arr.reduce((prev, cur) => {
        prev[cur] = (prev[cur] || 0) + 1
        return prev
    }, {})
    
    4. 将二维数组转换为一维数组
    const data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
    const flat = data.reduce((prev, cur) => {
        return prev.concat(cur)
    }, [])
    
    5. 求数组最大值
    const num = [1, 2, 3, 5, 5, 1]
    const max_num = num.reduce((prev, cur) => {
        return Math.max(prev, cur)
    })
    

    相关文章

      网友评论

          本文标题:JS reduce函数

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