reduce完整的形式是:

1 arr.reduce((pre,value,index,arr)=>{
2     console.log(pre,value)
3 },initValue)

有初始值的情况:

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

没有初始值时数组的第一项就是pre,至于后面的undefined因为没有return操作,比如:

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

没有初始值时:

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

1.数组求和

1 let arr = [2,3,5,3,4];
2 const sum = arr.reduce((pre,value)=>{
3         console.log(pre,value)
4         return pre+=value
5     })
6 
7 console.log(sum)

比如你要90和arr的和可以这样操作:

1 let arr = [2,3,5,3,4];
2 const sum = arr.reduce((pre,value)=>{
3         console.log(pre,value)
4         return pre+=value
5     },90)
6 
7 console.log(sum)

2.数组去重

1 let arr = [2,3,5,3,4,2,4,3,6];
2 const sum = arr.reduce((pre,value)=>{
3         //console.log(pre,value)
4         return pre.includes(value)?pre:pre.concat(value)
5     },[])
6 
7 console.log(sum) //[2,3,5,4,6]

也可以用filter如:

1 let arr = [2,3,5,3,4,2,4,3,6];
2 
3 let sum = arr.filter((item,index,arr)=>{
4     return arr.indexOf(item)==index;
5 })
6 
7 console.log(sum) //[2,3,5,4,6]

更简单的就new Set了

3.数组降维

1 let arr = [[1,2],[3,4],[2,5],[4,5]];
2 console.log(arr.flat())

使用reduce来搞:

1 let arr = [0,[1],[2,3],[4,[5,6,7]]];
2 
3 function arrJw(arr){
4     return arr.reduce((pre,cur)=>{
5         return pre.concat(Array.isArray(cur)?arrJw(cur):cur)
6     },[])
7 }
8 console.log(arrJw(arr)) //[0,1,2,3,4,5,6,7]

4.统计:

  求和

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

  

1 let arr = [2,3,2,4,2,5,2];
2 function count(array,item){
3     return array.reduce(function(total,cur){
4         total += item===cur?1:0;
5         return total
6     },0 )
7 }
8 console.log(count(arr,2)) //4

菜鸟目前只会这些,更多使用方法还在探索中。。。

 

 

 

posted on 2021-02-23 21:51  你这个梦,有点大  阅读(117)  评论(0编辑  收藏  举报