数组方法reduce()用法

前言

数组的reduce方法可以进行求和和筛选、去重。工作中很少有人用这个方法。其实用起来也挺简单的下面举几个列子


reduce方法

arr.reduce((prev,cur,index,arr)=>{
		
	},init)
		// arr: 表示将要原数组
		// prev:表示上一次调用回调时的返回值,或者初始值init
		// cur:表示当前正在处理的数组元素
		// index:表示正在处理的数组元素的索引,若提供init值,则索引为0,否则索引为1
		// init: 表示初始值

求和
const arr = [1,2,3,4,5,6,7]
		const sum = arr.reduce((pre,cur)=>{
		    return pre +cur
		})
		console.log(sum)
		
		// 数组求和方法是这个reduce方法最常见的使用案例了,但是很多人只知道返回pre + cur就能返回总和,如果我稍微把这个方法下面这样呢
		const arr1 = [1,2,3,4,5,6,7]
		const sum = arr1.reduce((pre,cur)=>{
		    return pre +cur
		},2)
		console.log(sum)
	
		// 大家觉得结果还是一样的吗
		// 答案显然是否定的,下面我给大家解释解释:
		
		// 首先我们要明确的时候,pre表示的是上一次回调时的返回值,或者是初始值init。
		// 在我们第一次调用的时候,第一个案例是没有设置init的值,在没有设置init值的情况下,index的索引值是从1,其实是第一次的时候就隐式调用了pre+cur,你可以理解为是在背后做了pre是0+cur:1。我们在控制台看到的就是整个计算过程是index是1-6。
		// 在第二个案例中,init设置的值是2,那么就是代表pre的初始值就是2,那么第一次的时候,index是从0开始的,第一次调用返回的就是2+arr[1]=3,整个过程index执行是从0-6,共7次

筛选每个元素出现的次数
let person = ['张三','李四','王五','老六','小七','李四',]
		let nameObj = person.reduce((pre,cur) =>{
		    if( cur in pre){
		        pre[cur]++
		    }
		    else{
		        pre[cur] = 1
		    }
		    return pre
		}, {})
		console.log(nameObj) // 小七: 1张三: 1李四: 2王五: 1老六: 1
数组去重
var arr2 = [1,2,3,4,5,3,2,1,6,4,7,8]
		var newArr = arr2.reduce((pre,cur)=>{
		    if(!pre.includes(cur)){
		        return pre.concat(cur)
		    }
		    else{
		        return pre
		    }
		},[])
		console.log(newArr)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲码的老余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值