先说reduce的参数:
第一个参数是之前处理的结果, 第二个参数是当前的值, 第三个参数是当前的值的index, arr是循环的数组
1.求和求积的用法
求积:求和同理, 把*改成+即可
var arr = [1, 2, 3, 4];
var sum = arr.reduce((prev, cur, index, arr)=> {
console.log(prev, cur, index,arr);
return prev * cur;
})
console.log(sum);
2.去重的方法
let names = ['1', '2',2,4 ,2,3,1,'4', '2', '2'];
let result = names.reduce((sum,v,i,arr)=>{
if(sum.includes(v)){
return sum
}else{
return sum.concat(v)
}
},[])
console.log(result)
其中数组中concat用法
let arr = [1,2,3,4];
let arr2 = {'aaaa':111}
let arr3 = arr.concat(arr2)
console.log(arr3)
//arr1+arr2=> [1,2,3,4,{'aaaa':111}]
concat将数组合并
上面的arr.reduce(()=>{},[])箭头函数后面的数组, 可以理解成return 的初始值(只是个人理解),下面的代码也可以说明,下面写的是对象, 上面是数组,
3.数组中元素出现的次数
let nums = ['2', 'c', 'b', 'a', 'a'];
let Anums = nums.reduce((sum,v,i)=>{
if(v in sum){
sum[v]++
}else{
sum[v] =1
}
return sum
},{})
console.log(Anums)
// {2: 1, c: 1, b: 1, a: 2}