reduce方法是需要用一个数组去.reduce,然后这个reduce里面需要写一个回调函数,这个回调函数有四个值,第一个值是上次调用函数的返回值,第二个值是当前数组参与运算的值,第三个值是索引,第四个值是被遍历的数组。在回调函数外,可以设置函数的初始迭代值。
标准写法为:
let arr=[1,2,3,6,1]
arr.reduce((pre,cur,index,arr)=>{
console.log(pre,cur,index,arr);
return pre+cur
},0)
求和一个数组:
let arr1=[1,2,3,4,5,6,7,8,9,10]
let num= arr1.reduce((pre,cur,index,arr1)=>{
return sun=pre+cur
},0)
console.log(num);
数组去重:
let arr2=[1,2,3,4,2,5,2,4,1,1]
let res= arr2.reduce((pre,cur)=>{
if(pre[cur]){ //如果pre这个对象里面装了cur,那么就进行+1,就代表重复了
pre[cur]++
}else{
pre[cur]=1//如果pre这个对象里面没有装了cur,那么就=1,就代表里面没有这个值
}
return pre //必须把pre这个对象return
},{})
console.log(res);
对于对象的属性求和:
let obj=[
{
name:'王麻子',
age:21
},
{
name:'李四',
age:21
},
{
name:"张三",
age:18
}
]
let res1 = obj.reduce((pre,cur)=>{
let sun= pre+cur.age
return sun
},0)
console.log(res1);
数组去重,并装到一个新数组中:
let arr3=[1,1,3,2,5,5,2,1,3,7]
let xy= arr3.reduce((pre,cur)=>{
if(!pre.includes(cur)){//用到了includes去查找,这个数组中的值,如果里面没有这个值,那么就push到pre这个数组里面去
pre.push(cur)
}
return pre
},[])
console.log(xy);