• Array.reduce() 详解


    reduce()方法是数组原型上的方法(Array.prototype.reduce())

    reduce(callbackFn,initialValue)有两个参数

    第一个参数是一个callbackFn,我们就叫做reduce 回调函数,由用户自己提供

    callbackFn(reduce 回调函数)有四个参数: 一个 “reducer” 函数,包含四个参数:

    1. previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]。
    2. currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。
    3. currentIndex:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。
    4. array:调用reduc()的数组本身。

    第二个参数 initialValue(初始值)可选的

    作为第一次调用 callback 函数时参数 previousValue 的值。若指定了初始值 initialValue,则 currentValue 则将使用数组第一个元素;否则 previousValue 将使用数组第一个元素,而 currentValue 将使用数组第二个元素。

    Array.reduce(callbackFn,initialValue) 是遍历数组,遍历一次就zh执行一次callback函数,

    • 回调函数第一次执行时,previousValue 和 currentValue 的取值有两种情况:
      1.如果调用 reduce() 时提供了 initialValue,previousValue 取值则为 initialValue,currentValue 则取数组中的第一个值。
      2.如果没有提供 initialValue,那么 previousValue 取数组中的第一个值,currentValue 取数组中的第二个值。
    • 每次执行callback函数的返回值会作为下一次调用callback函数的第一个参数,数组中还未被处理的第一个成员将作为第二个参数,直至最后一次调用callback函数,最终的返回结果将作为Array.reduce()的返回值

    如果数组为空且未指定初始值 initialValue,则会抛出 TypeError。

    如果数组仅有一个元素(无论位置如何)并且没有提供初始值 initialValue,或者有提供 initialValue 但是数组为空,那么此唯一值将被返回且 callbackfn 不会被执行。

    例如:
    数组求和

    let sum = [0, 1, 2, 3].reduce(function (previousValue, currentValue) {
       
      return previousValue + currentValue
    }, 0)
    // sum is 6
    
    • 1
    • 2
    • 3
    • 4
    • 5

    将二维数组转化为一维

    let flattened 
    • 相关阅读:
      MySQL面试50题【mysql】
      中秋海报制作不求人,详细教程来袭
      论文阅读之RETHINKING POSITIONAL ENCODING IN LANGUAGE PRE-TRAINING
      Linux(阿里云服务器)中安装Nginx命令
      Latex双栏文章
      [C++]杨辉三角
      asp毕业设计——基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码)——网上购物平台
      微信小程序-后台安装ssl证书
      torch.manual_seed(0)报错RuntimeError: CUDA error: unspecified launch failure
      C++ Reference: Standard C++ Library reference: C Library: cmath: asin
    • 原文地址:https://blog.csdn.net/CD_promise/article/details/126833867