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




你可能感兴趣的:(js常用方法总结,数组去重)