Array的reduce方法

let arr = [1,2,3,4,5,6];
arr.reduce(function(pre,value,index,array){
	console.log(pre,value);
})

结果如下:

1,2
undefined 3
undefined 4
undefined 5
undefined 6

reduce方法回调函数的四个参数的意义:
pre:上一次返回的值(起初调用的时候pre就是数组的第一个值)
value:起初调用时数组的第二个值,下一次调用就是第三个值,以此类推。

let arr = [1,2,3,4,5,6];
arr.reduce(function(pre,value,index,array){
	console.log(pre,value);
	return 99;
})

结果如下:

1,2
99 3
99 4
99 5
99 6

如果有返回值,那么pre就是返回的值。

let arr = [1,2,3,4,5,6];
arr.reduce(function(pre,value,index,array){
	console.log(pre,value);
	return 99;
},0)

结果如下:

0,1
99 2
99 3
99 4
99 5
99 6

reduce方法的回调函数如果设置了第二个参数,那么起初调用的时候pre的值就是0,那么value的值就是从数组的第一个值开始的

reduce方法可以用来累加数组里面的值:

let arr = [1,2,3,4,5];
//第一中方法
var res = arr.reduce(function(pre,value){
	return pre + value
})
console.log(res)
//第二种方法
var res = arr.reduce(function(pre,value){
	return pre+=value
},0)
console.log(res)

reduce方法可以检测数组里面的某个值重复了几次

let arr = [1,2,3,1,1,1];
function arrayCount(array,item){
	return array.reduce(function(total,cur){
		total += item ==cur?1:0
		return total;
	},0)
}
console.log(arrayCount(arr,1))

total += item ==cur?1:0 解释
if(item==cur){
	total += 1;
}else{
	total +=0;
}

reduce可以用来检索数组中的最大值

let arr = [1,2,3,4,5,6,66];
var max = arr.reduce(function(pre,value){
	return pre>value?pre:value
})
console.log(max)

reduce方法去重数组

let arr = [1,2,2,3,3,3,4,4,5,5];
arr.reduce(function(arr,cur){
	if(arr.includes(cur) === false){
		arr.push(cur);
	}
	return arr;
},[])

利用reduce去除购物车重复商品

let cart = [
    {name:"iphone",price:12000},
    {name:"imac",price:25000},
    {name:"ipad",price:3600},
    {name:"ipad",price:3600},
    {name:"iphone",price:12000},
];
function filterGoods(goods){
	return goods.reduce(function(arr,cur){
		let find = arr.find(function(v){
			return v.name === cur.name;
		})
		if(!find)arr.push(cur)
		return arr
	},[])
}

利用reduce检索购物车中商品价格大于10000的商品名称

let cart = [
    {name:"iphone",price:12000},
    {name:"imac",price:25000},
    {name:"ipad",price:3600}
];
function getGoodsName(goods,price){
	return goods.reduce(function(arr,cur){
		if(cur.price>price)arr.push(cur)
	},[]).map(function(item){
		return item.name
	})
}
console.log(getGoodsName(cart,10000))
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值