reduce 用法

array.reduce(callback[, initialValue])第一个参数是每一项上调用的函数,该函数有四个参数:

accumulator:累加回调返回值;他是上一次调用时返回的累积值,或initValue;
currentValue:数组中正在处理的元素;
currentIndex:数组中正在处理的当前元素的索引。如果提供了initialValue,这索引号为0,否则索引为1;
array:调用reduce()的数组。
当第二个参数省略时,遍历从数组第二项开始,数组第一项被当作前一个值accumulator。

**1.数组求和**	
var numbers = [10, 20, 30, 40, 50];
var result = numbers.reduce(function (acc, cur) {
  return acc + cur;
}, 0);
console.log(result); // 150
**2更新数组再筛选 (假设现在有一个数列[10, 20, 30, 40, 50],每一项乘以2,然后筛选出大于60的项。)**
方法一:
var numbers = [10, 20, 30, 40, 50];
var result = numbers.reduce(function(acc, cur) {
	cur = cur * 2
	if(cur > 60) {
		acc.push(cur)
	}
	return acc
}, [])
console.log(result) // [80, 100]
方法二:
var arr = [10,20, 30, 40, 50]
var newArr = arr.map(function(item, index){
	return item * 2
})
var filterArr = newArr.filter(function(item, index){
	return  item > 60
})
console.log(filterArr)
**3.统计数组中重复出现项的个数,用对象表示**
var letters = ['A', 'B', 'C', 'C', 'B', 'C', 'C'];
var letterObj = letters.reduce(function(acc, cur) {
	acc[cur] = acc[cur] ? ++acc[cur] : 1;
	return acc
}, {})
console.log(letterObj)  // // {A: 1, B: 2, C: 4}
**4.数组去重**
var letters = ['A', 'B', 'C', 'C', 'B', 'C', 'C'];
var letterArr = letters.reduce(function (acc, cur) {
  if (acc.indexOf(cur) === -1) {
    acc.push(cur);
  }
  return acc;
}, []);
console.log(letterArr); //  ["A", "B", "C"]
ps: 关于数组去重可参考
https://segmentfault.com/a/1190000016418021




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值