• JS reduce方法的使用


    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

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

     

     

  • 相关阅读:
    CLRS 10.28
    [转]教你如何查看各种浏览器的Cookies[IE cookies信息]
    红黑树c实现
    ubuntu下eclipse中键盘失灵
    putty中文乱码解决
    [ 转]关于linux下wireshark启动时Lua报错
    c/c++运算符优先级
    CLRS 10.45
    ubuntu 12.04 安装NS2
    SQL IsDate()
  • 原文地址:https://www.cnblogs.com/pfybk/p/14438413.html
Copyright © 2020-2023  润新知