首页 > 其他分享 >ES6数组reduce方法使用

ES6数组reduce方法使用

时间:2023-08-06 10:33:53浏览次数:35  
标签:ES6 sum reduce accumulator let numbers 数组

reduce方法对数组中的每个元素执行一个reducer函数,将其减少为单个值。 reduce的语法如下:

let result = arr.reduce(reducer, initialValue);

reducer函数包含四个参数:

  • accumulator - 累计器,默认为initialValue的值,累计回调函数的返回值
  • currentValue - 数组中正在处理的元素
  • index - 当前元素的索引
  • array - reduce()被调用的数组 示例:
let numbers = [1, 2, 3];

let sum = numbers.reduce((accumulator, current) => {
  return accumulator + current;
}, 0);

console.log(sum); // 6

上面代码中,reduce遍历numbers数组,将每个元素累加至accumulator,并将返回值赋值给sum。 reduce的初值initialValue通常会设置为0或1,这样可以直接返回乘积或总和。 你也可以省略initialValue,这时accumulator会从索引1开始计算:

let numbers = [1, 2, 3];

let sum = numbers.reduce((acc, cur) => acc + cur); 

console.log(sum); // 6

reduce方法非常适合将数组转换为单个值,常见的用例有:

  • 求数组元素之和
  • 数组元素乘积
  • 统计数组中某个元素的个数
  • 将二维数组转化为一维
  • 数组去重等 通过reduce方法,可以避免手动初始化和更新一个累计变量的麻烦。

标签:ES6,sum,reduce,accumulator,let,numbers,数组
From: https://blog.51cto.com/u_15527112/6982012

相关文章

  • C关于一维数组以及二维数组的创建和简单利用(上)
    第一段代码#include<stdio.h>#include<String.h>intmain(){inta[]={1,2,3,4,5,6,7,8,9,10};intb=sizeof(a)/sizeof(a[0]);intc=0;for(c=0;c<b;c+=1){printf("&a[%d]=%p\n",c,&a[c]);}......
  • 王道408用数组,链表以及双向链表实现栈、队列
    我在电脑上敲了一遍,又在纸上模拟了一遍下面记录在电脑上敲的:一、用数组实现栈#include<stdio.h>#include<string.h>#defineMaxSize50typedefstruct{intdata[MaxSize];inttop;}stack;voidInitStack(stack&S){S.top=-1;S.data[0]=5;......
  • JS数组有哪些常用原生方法?哪些能改变数组本身?
    1.数组和字符串的转换方法toString不改变原数组constarr=[1,2,3]console.log(arr.toString());//1,2,3join不改变原数组join(str)数组转字符串,接收一个参数,默认为逗号分隔符。constarr=[1,2,3]console.log(arr)//[1,2,3]console.log(ar......
  • 二维数组花式遍历(旋转,螺旋) [labuladong-刷题打卡 day5]
    矩阵旋转48.旋转图像难点主要在于:用翻转和镜像处理逆反和旋转,和逆转单词一样“难者不会,会者不难”,思路简单镜像的坐标对应关系处理语言特性的利用,不同语言有不同api,实际代码中会有很大不同,但思想一致如果确定矩阵维数,通过线性代数应该可以直接计算答案...classSolution......
  • 将数组初始化为0并且逆置
    voidinit(int*arr,intsz){ inti=0; for(i=0;i<sz;i++) { arr[i]=0; }}voidprint(intarr[],intsz){ inti=0; for(i=0;i<sz;i++) { printf("%d",arr[i]); } printf("\n");}voidreverse(intarr[],intsz){ intleft=......
  • 5445.子数组和排序后的区间和
          1intcmp(constvoid*a,constvoid*b)2{3return*(int*)a-*(int*)b;4}5intrangeSum(int*nums,intnumsSize,intn,intleft,intright){6if(n<=0)returnNULL;7intm=numsSize*(numsSize+1)/2,i,j,k;8intn......
  • C语言-计蒜客-斐波那契数列(非数组)
    小蒜蒜最近学习了斐波那契数列。斐波那契数列是指这样的数列:数列的第一个和第二个数都为1、1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求斐波那契数列中第k个数是多少。输入格式输入一行,包含一个正整数k。(1≤k≤46)输出格式输出一行,包含一个正整数,表示斐波那......
  • 在线直播系统源码,js循环数组的方法合集
    在线直播系统源码,js循环数组的方法合集一、forEach循环注:没有return返回值,且不能用break跳出循环。 letarrlist=['123','456','789'];arrlist.forEach(function(value,index){  //value是每一项,index是索引  console.log(value,index);}); ​二、for循环......
  • 将中文汉字转为字节数组
     ///<summary>       ///将中文汉字转为字节数组       ///</summary>       ///<paramname="chineseStr"></param>       ///<returns></returns>       publicstaticbyte[]parseChineseToByte(stringchineseStr)......
  • Java中如何向一个string类型的数组中添加数据
    在Java中,String类型的数组是固定长度的,一旦创建后就无法改变其长度。如果你需要向一个String类型的数组中添加数据,可以考虑使用ArrayList或LinkedList等可变长度的集合类型来代替。使用 ArrayList,你可以通过调用add()方法来向集合中添加元素,例如://创建一个ArrayList......