数组reduce的用法

数组reduce的用法

如何使用reduce

	arr.reduce(callback(accumulator, currentValue, index, array), initialValue)
  • reduce函数中一共接收两个参数:
    • callback:执行数组中的每个值(如果没有提供initialValue,第一个值除外)的函数,该函数中包含四个参数:
      • accumulator:上一次循环返回的值或者initialValue
      • currentValue: 当前循环的值
      • index:当前处理数据的索引
      • array:调用reduce的数组本身
    • initialValue:第一次调用callback函数时,accumulator的值,如果没有传入该参数,reduce会使用数组中的第一个元素的值作为初始值,所以空数组调用reduce会出现报错

实例解析

  • 基础用法
	// let arr = [] // 报错:Reduce of empty array with no initial value
	let arr = [1, 2, 3, 4]
	arr.reduce((prev, curv, i, arr) => {
		console.log('上一次返回值:' + prev) // 打印结果:2 3 4
		console.log('当前循环值:' + curv) // 打印结果:2 3 4
		console.log('当前循环下标:' + i) // 打印结果:0 1 2
		console.log('调用循环的数组' + prev) // 打印结果:[1, 2, 3, 4]
		return curv
	})

在上述例子中会发现:一共四个元素,缺少了一次循环?主要是因为没有传initialValue参数,只需要增加初始值,循环依旧是四次

  • 求和
	let arr = [1, 2, 3, 4]
	let sun = arr.reduce((prev, curv, i, arr) => {
		return prev + curv
	})
	console.log(sun) // 10
  • 数组去重
	let arr = [1, 2, 3, 4, 3, 4]
	let newArr = arr.reduce((prev, curv, i, arr) => {
		if (!prev.includes(curv)) {
			prev.push(curv)
		}
		return prev
	}, [])
	console.log(newArr ) // [1, 2, 3, 4]
  • 扁平二维数组
	let arr = [[1, 2], [3, 4], [5, 6]]
	let newArr = arr.reduce((prev, curv) => {
		return prev.concat(curv)
	}, [])
	console.log(newArr) // [1, 2, 3, 4, 5, 6]

个人记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淡莣一苆~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值