首页 > 编程语言 > 详细

ES6的数组方法--reduce

时间:2020-11-17 15:53:02      阅读:35      评论:0      收藏:0      [点我收藏+]

前言:

reduce方法好像平时很少用到它,但其实如果你真正的了解了它的话,我们可以在很多场景用到它,例如求数组元素的出现次数,求和,求乘积等等。。下面我来带大家去认识下它吧。

一、reduce语法

引用MDN文档里对reduce的语法介绍:arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

参数一:callback()回调函数,回调函数里有4个参数。

  accumulator:它是上一次调用回调时返回的累积值(第一次也有可能是initialValue)。

  currentValue:数组中正在处理的元素。

  index:数组中正在处理的当前元素的索引。 如果提供了initialValue,则起始索引号为0,否则从索引1起始。

  array:调用reduce()的数组本身

参数二:initialValue:作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 注意在没有初始值的空数组上调用 reduce 将报错。

参数繁多,是不是有点看不过来了?来点实例帮助掌握下。

二、reduce用法

1).简单用法,求和求乘积

var arr = [1, 2, 3, 4];
var sum = arr.reduce((x,y)=>x+y,0)//加初始值,以防数组为空时报错
var mul = arr.reduce((x,y)=>x*y,1)

2).高级用法

a.数组统计元素出现个数

var arr=[a,b,c,a];
arr.reduce((prev,curr)=>{
    if(curr in prev){//判断当前元素是否出现过
      prev[curr]++;
    }else{
      prev[curr]=1;
    }
    return prev
},{})

b.把二维数组转化为一维数组

let arr = [[0, 1], [2, 3], [4, 5]]
let newArr = arr.reduce((pre,cur)=>{
    return pre.concat(cur)
},[])

c.数组去重

var arr=[a,b,c,a];
arr.reduce((pre,cur)=>{
    if(!pre.includes(cur)){
      console.log(pre.concat(cur))
      return pre.concat(cur)
    }else{
      return pre
    }
},[])

更多用法。。。待续

ES6的数组方法--reduce

原文:https://www.cnblogs.com/zjzpg/p/13993197.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!