• 数组的reduce函数


    reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。(汇合

    先看个例子

    const array1 = [1, 2, 3, 4];
    const reducer = (accumulator, currentValue) => accumulator + currentValue;
    
    // 1 + 2 + 3 + 4
    console.log(array1.reduce(reducer));
    // expected output: 10
    
    // 5 + 1 + 2 + 3 + 4
    console.log(array1.reduce(reducer, 5));
    // expected output: 15

     reduce为数组中的每一个元素依次执行callback函数(reducer函数),

    reducer 函数接收4个参数:

    1. Accumulator (acc) (累计器)
    2. Current Value (cur) (当前值)
    3. Current Index (idx) (当前索引)
    4. Source Array (src) (源数组)

    回到函数第一次执行时,accumulator 和currentValue的取值有两种情况:

    1、如果调用reduce()时提供了initialValueaccumulator取值为initialValuecurrentValue取数组中的第一个值;

    2、如果没有提供 initialValue,那么accumulator取数组中的第一个值,currentValue取数组中的第二个值。

    手写reduce

    Array.prototype.myReduce = function(fn, base){
        if(this.length === 0 && !base){
            throw new Error('出错了')
        }
        for(let i = 0; i < this.length; i++){
            if(!base){
                base =  fn(this[i],this[i+1], i, this)
            }
            else{
                base = fn(base,this[i],i,this)
            }
        }
        return base;
    }
     
  • 相关阅读:
    获取split分割的最后一个值
    django分页查询
    django中iframe请求报错的问题
    pandas.Series
    NumPy 切片和索引
    继承
    NumPy 从数值范围创建数组
    迭代器iter用法
    numpy.asarray
    NumPy 创建数组
  • 原文地址:https://www.cnblogs.com/jwenming/p/14574335.html
Copyright © 2020-2023  润新知