美文网首页
reduce 方法 (Array) (JavaScript)

reduce 方法 (Array) (JavaScript)

作者: 红烧牛腩 | 来源:发表于2017-07-08 11:58 被阅读0次

    语法

    array1.reduce(callbackfn[, initialValue])

    参数

    参数             定义


    array1              必需。一个数组对象。

    callbackfn        必需。一个接受最多四个参数的函数。对于数组中的每个元素,reduce方法都会调用callbackfn函数一                           次。

    initialValue        可选。如果指定initialValue,则它将用作初始值来启动累积。第一次调用callbackfn函数会将此值作为参                          数而非数组值提供。


    返回值

    通过最后一次调用回调函数获得的累积结果。

    异常

    当满足下列任一条件时,将引发TypeError异常:

    callbackfn参数不是函数对象。

    数组不包含元素,且未提供initialValue

    ExceptionCondition

    备注

    如果提供了initialValue,则reduce方法会对数组中的每个元素调用一次callbackfn函数(按升序索引顺序)。如果未提供initialValue,则reduce方法会对从第二个元素开始的每个元素调用callbackfn函数。

    回调函数的返回值在下一次调用回调函数时作为previousValue参数提供。最后一次调用回调函数获得的返回值为reduce方法的返回值。

    不为数组中缺少的元素调用该回调函数。

    reduceRight 方法 (Array) (JavaScript)按降序索引顺序处理元素。

    回调函数语法

    回调函数的语法如下所示:

    function callbackfn(previousValue, currentValue, currentIndex, array1)

    可使用最多四个参数来声明回调函数。

    下表列出了回调函数参数。


    回调参数                      定义

    previousValue              通过上一次调用回调函数获得的值。如果向reduce方法提供initialValue,则在首次调用函数时,                                      previousValueinitialValue

    currentValue                 当前数组元素的值。

    currentIndex                   当前数组元素的数字索引。

    array1                             包含该元素的数组对象。


    第一次调用回调函数

    在第一次调用回调函数时,作为参数提供的值取决于reduce方法是否具有initialValue参数。

    如果向 reduce 方法提供initialValue

    previousValue参数为initialValue

    currentValue参数是数组中的第一个元素的值。

    如果未提供initialValue

    previousValue参数是数组中的第一个元素的值。

    currentValue参数是数组中的第二个元素的值。

    修改数组对象

    数组对象可由回调函数修改。

    下表描述了在reduce方法启动后修改数组对象所获得的结果。

    reduce方法启动后的条件

    元素是否传递给回调函数

    在数组的原始长度之外添加元素。

    否。

    添加元素以填充数组中缺少的元素。

    是,如果该索引尚未传递给回调函数。

    元素被更改。

    是,如果该元素尚未传递给回调函数。

    从数组中删除元素。

    否,除非该元素已传递给回调函数。

    下面的示例将数组值连接成字符串,各个值用“::”分隔开。由于未向reduce方法提供初始值,第一次调用回调函数时会将“abc”作为previousValue参数并将“def”作为currentValue参数。

    JavaScript

    // Define the callback function.functionappendCurrent (previousValue, currentValue) {returnpreviousValue +"::"+ currentValue;    }// Create an array.varelements = ["abc","def", 123, 456];// Call the reduce method, which calls the callback function// for each array element.varresult = elements.reduce(appendCurrent);document.write(result);// Output://  abc::def::123::456

    下面的示例向数组添加舍入后的值。使用初始值 0 调用reduce方法。

    JavaScript

    // Define the callback function.functionaddRounded (previousValue, currentValue) {returnpreviousValue + Math.round(currentValue);    }// Create an array.varnumbers = [10.9, 15.4, 0.5];// Call the reduce method, starting with an initial value of 0.varresult = numbers.reduce(addRounded, 0);document.write (result);// Output: 27

    相关文章

      网友评论

          本文标题:reduce 方法 (Array) (JavaScript)

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