新浦京81707con > 注册购买 > JavaScript reduce和reduceRight详解

原标题:JavaScript reduce和reduceRight详解

浏览次数:127 时间:2019-08-28

2.上边包车型大巴亲自去做向数组增加舍入后的值。使用起先值 0 调用 reduce 方法。

JavaScript reduce和reduceRight详解,reducereduceright

reduce 方法(升序)

语法:  

array1.reduce(callbackfn[, initialValue])

参数

定义

array1

必需。一个数组对象。

callbackfn

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

initialValue

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

返回值:

        通过最后叁次调用回调函数得到的积存结果。

异常:

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

  1. callbackfn 参数不是函数对象。
  2. 数组不分包成分,且未提供 initialValue。

回调函数语法:

    function callbackfn(previousValue, currentValue, currentIndex, array1)

    可应用最多多个参数来声称回调函数。

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

回调参数

定义

previousValue

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

currentValue

当前数组元素的值。

currentIndex

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

array1

包含该元素的数组对象。

首先次调用回调函数

在首先次调用回调函数时,作为参数提供的值取决于 reduce 方法是还是不是具有initialValue 参数。

比如向 reduce 方法提供 initialValue:

previousValue 参数为 initialValue。
currentValue 参数是数组中的第二个因素的值。

若果未提供 initialValue:

previousValue 参数是数组中的第多个成分的值。
currentValue 参数是数组中的第三个元素的值。

修改数组对象

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

下表描述了在 reduce 方法运维后修改数组对象所收获的结果。

reduce 方法启动后的条件

元素是否传递给回调函数

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

否。

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

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

元素被更改。

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

从数组中删除元素。

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

实例:

1.上边包车型大巴示范将数组值连接成字符串,种种值用“::”分隔开。由于未向 reduce 方法提供开首值,第一遍调用回调函数时会将“abc”作为 previousValue 参数并将“def”作为 currentValue 参数。

function appendCurrent (previousValue, currentValue) {
 return previousValue   "::"   currentValue;
 }
var elements = ["abc", "def", 123, 456];
var result = elements.reduce(appendCurrent);
document.write(result);
// Output:
// abc::def::123::456

2.底下的演示向数组增添舍入后的值。使用开头值 0 调用 reduce 方法。

function addRounded (previousValue, currentValue) {
 return previousValue   Math.round(currentValue);
 }
var numbers = [10.9, 15.4, 0.5];
var result = numbers.reduce(addRounded, 0);
document.write (result);
// Output: 27

3.底下的演示向数组中增加值。 currentIndex 和 array1 参数用于回调函数

function addDigitValue(previousValue, currentDigit, currentIndex, array) {
 var exponent = (array.length - 1) - currentIndex;
 var digitValue = currentDigit * Math.pow(10, exponent);
 return previousValue   digitValue;
 }
var digits = [4, 1, 2, 5];
var result = digits.reduce(addDigitValue, 0);
document.write (result);
// Output: 4125

此题剖判:

    首先赋予了开班值0,那么currentDigit正是从4始发的,调用方法四回,那样能够把四次艺术调用的参数都写出来:(0,4,0,array)、(4,1,1,array)、(1,2,2,array)、(2,5,3,array),再一遍开展估测计算,由于起先值是0,全体只须求总结出各种方法的再次回到值最后相加就能够。array.length始终为4,则陆遍计算的值分别为伍仟 100 20 5=4125

reduceRight 方法(降序)

reduceRight的语法以及回调函数的法则和reduce方法是一律的,分裂就是在与reduce是升序,即角标从0开首,而reduceRight是降序,即角标从arr.length-1起初。要是有开首值,则从最终贰个数开端企图,若无起来值,则previousValue参数是数组中最终一个成分的值,currentValue是数组中尾数第四个因素的值。

示例:

1.下边包车型地铁亲自过问获取数组中值为 1 到 10 之间的因素。提要求 reduceRight 方法的开头值是二个空数组。

function Process2(previousArray, currentValue) {
 var nextArray;
 if (currentValue >= 1 && currentValue <= 10)
  nextArray = previousArray.concat(currentValue);
 else
  nextArray = previousArray;
 return nextArray;
}
var numbers = [20, 1, -5, 6, 50, 3];
var emptyArray = new Array();
var resultArray = numbers.reduceRight(Process2, emptyArray);
document.write("result array="   resultArray);
// Output:
// result array=3,6,1

2.reduceRight 办法可选拔于字符串。上面包车型客车演示演示怎么样使用此方法反转字符串中的字符。

function AppendToArray(previousValue, currentValue) {
 return previousValue   currentValue;
}
var word = "retupmoc";
var result = [].reduceRight.call(word, AppendToArray, "the ");
// var result = Array.prototype.reduceRight.call(word, AppendToArray, "the ");
document.write(result);
// Output:
// the computer

此处能够直接使用空数组调用reduceRight方法,何况应用call方法将参数引进。也足以是直接选拔原型链的点子举行调用,即Array.prototype.reduceRight.call(word, AppendToArray, "the ");

谢谢阅读,希望能协理到大家,感谢我们对本站的援救!

reduce和reduceRight详解,reducereduceright reduce 方法(升序) 语法: array1.reduce(callbackfn[, initialValue]) 参数 定义 array1 必须。多少个数组对象...

若果未提供initialValue

        当满意下列任一条件时,将引发 TypeError 格外:

设若向 reduce 方法提供initialValue

这里能够一贯运用空数组调用reduceRight方法,並且动用call方法将参数引进。也足以是一贯动用原型链的办法张开调用,即Array.prototype.reduceRight.call(word, AppendToArray, "the ");

// 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 方法是或不是具有initialValue 参数。

要素是不是传递给回调函数

reduceRight的语法以及回调函数的平整和reduce方法是同一的,差异正是在与reduce是升序,即角标从0开端,而reduceRight是降序,即角标从arr.length-1开首。倘诺有初叶值,则从最终二个数初始估算,若无开头值,则previousValue参数是数组中最终一个因素的值,currentValue是数组中尾数第二个要素的值。


多谢阅读,希望能帮衬到我们,多谢我们对本站的支撑!

返回值

下表描述了在 reduce 方法运转后修改数组对象所得到的结果。

第二次调用回调函数

    function callbackfn(previousValue, currentValue, currentIndex, array1)

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

参数

定义

array1

必需。一个数组对象。

callbackfn

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

initialValue

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

.aspx#Anchor_2)

语法:  

previousValue参数为initialValue

reduce 方法启动后的条件

元素是否传递给回调函数

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

否。

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

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

元素被更改。

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

从数组中删除元素。

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

参数

2.reduceRight 方法可接纳于字符串。下边包车型地铁亲自过问演示怎样使用此办法反转字符串中的字符。

添美金素以填充数组中紧缺的要素。

previousValue 参数是数组中的第三个要素的值。
currentValue 参数是数组中的第二个要素的值。

array1              须要。二个数组对象。

回调函数语法:

上面包车型客车示范将数组值连接成字符串,种种值用“::”分隔绝。由于未向reduce主意提供开头值,第二回调用回调函数时会将“abc”作为previousValue参数并将“def”作为currentValue参数。

示例:

回调参数                      定义

异常:

JavaScript

修改数组对象

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

    首先赋予了启幕值0,那么currentDigit正是从4开头的,调用方法七遍,这样能够把肆回艺术调用的参数都写出来:(0,4,0,array)、(4,1,1,array)、(1,2,2,array)、(2,5,3,array),再一次开展估测计算,由于先导值是0,全数只要求总计出各样方法的重临值最终相加就可以。array.length始终为4,则四遍总结的值分别为四千 100 20 5=4125

在数组的原有长度之外添港成分。

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

是,假诺该因素尚未传递给回调函数。

function Process2(previousArray, currentValue) {
 var nextArray;
 if (currentValue >= 1 && currentValue <= 10)
  nextArray = previousArray.concat(currentValue);
 else
  nextArray = previousArray;
 return nextArray;
}
var numbers = [20, 1, -5, 6, 50, 3];
var emptyArray = new Array();
var resultArray = numbers.reduceRight(Process2, emptyArray);
document.write("result array="   resultArray);
// Output:
// result array=3,6,1

callbackfn        供给。一个接受最多多少个参数的函数。对于数组中的每一种元素,reduce格局都会调用callbackfn函数一                           次。

此题剖析:

修改数组对象

function appendCurrent (previousValue, currentValue) {
 return previousValue   "::"   currentValue;
 }
var elements = ["abc", "def", 123, 456];
var result = elements.reduce(appendCurrent);
document.write(result);
// Output:
// abc::def::123::456

本文由新浦京81707con发布于注册购买,转载请注明出处:JavaScript reduce和reduceRight详解

关键词: 新浦京81707con 前端随笔

上一篇:实例化类的一点摘记,php源码分析

下一篇:没有了