zoukankan      html  css  js  c++  java
  • 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

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

     

     

  • 相关阅读:
    Tomcat:-Djava.net.preferIPv4Stack=true只支持ipv4
    centos解决bash: service: command not found 错误
    centos8重启网络服务
    项目中使用的二维码图片无法展示,查看图片链接报错500
    ERROR: ld.so: object ‘/usr/local/lib/libs.so‘ from /etc/ld.so.preload cannot be preloaded: ignore
    设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹
    Linux 查看登录日志及登录失败用户的ip
    accept4() failed (24: Too many open files)
    [Err] 2006
    webpack loader配置篇
  • 原文地址:https://www.cnblogs.com/pfybk/p/14438413.html
Copyright © 2011-2022 走看看