手机版

解析JavaScript数组方法简化

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

Array.prototype.reduce()

摘要

reduce()方法是数组的实例方法(共享方法),可由数组的实例对象调用。reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始减少,最后变成一个值。

语法

arr.reduce(回调[,initialValue]) {}

参数

回调函数中可以传递四个参数。

PreviousValue:最后一次调用回调函数返回的值,或者提供的initialValue。

当前值:数组中当前正在处理的元素

CurrentIndex:数组中当前处理的元素的索引,即currentValue的索引。如果存在initialValue的InitialValue,则它从0开始。如果不是从1开始,

数组:调用减少的数组

InitialValue:可选参数,作为第一次调用回调的第一个参数

返回值

reduce()的返回值是最后一次调用回调函数的结果

形容

Reduce依次为数组中的每个元素执行回调函数,排除数组中已删除或从未赋值的元素,并接受四个参数:

前一个值最后一个值当前值当前值当前值的索引第一次执行数组回调函数时,前一个值和当前值可能是两个不同的值之一。如果reduce有initialValue参数,则previousValue等于initialValue,Current Value等于数组中的第一个值;如果reduce没有initialValue参数,则previousValue等于数组中的第一个值,currentValue等于数组中的第二个值。

注意:如果没有initialValue参数,reduce将从索引1执行回调函数并跳过第一个索引。如果有initialValue参数,reduce将从索引0执行回调

如果数组为空并且没有initialValue参数,将引发TypeError。如果数组只有一个元素而没有initialValue,或者如果它有initialValue但数组是空的,这个唯一的值将直接返回而不调用回调函数。

一般来说,提供initialValue比较安全,因为如果没有初始值,就会出现下面的输出结果。

//初始值函数foo () {return [1,2,3,4,5]。不提供reduce ((x,y)=x y);//15};console . log(foo . call(this));function foo(){ return []。reduce((x,y)=x y);//TypeError };console . log(foo . call(this));//提供初始值函数foo () {return []。reduce ((x,y)=x y,0);//0};console . log(foo . call(this));reduce()是如何工作的

[0, 1, 2, 3, 4].reduce((previousValue,currentValue,index,array)=previousValue currentValue);回调执行四次,每次的参数和返回值如下表所示:

reduce的返回值是最后调用的回调函数的返回值(10)。

如果初始值作为第二个参数传入reduce,结果如下:

[0, 1, 2, 3, 4].reduce((previousValue,currentValue,index,array)=previousValue currentValue,10);

最后一次函数调用的返回值(20)作为reduce函数的结果返回

注意:添加initialValue参数将再次调用回调函数

例子

添加数组中的所有项目

让sum=[0,1,2,3,4]。reduce((x,y)=x y,0);//10展平二维数组

让arr=[[1,2],[3,4],[5,6]]。reduce((x,y)=x.concat(y),[]);//[1,2,3,4,5,6]以上就是本文的全部内容。希望这篇文章的内容能给大家的学习或工作带来一些帮助,也希望大家多多支持我们!

版权声明:解析JavaScript数组方法简化是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。