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

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

     

     

  • 相关阅读:
    Confluence 6 PostgreSQL 设置准备
    Confluence 6 MySQL 问题解决
    Confluence 6 MySQL 测试你的数据库连接
    Confluence 6 MySQL 输入你的数据库细节
    Confluence 6 下载和安装 MySQL 驱动
    Confluence 6 MySQL 创建数据库和数据库用户
    Confluence 6 配置 MySQL 服务器
    Confluence 6 MySQL 数据库设置准备
    Confluence 6 SQL Server 问题解决
    Confluence 6 SQL Server 数据库驱动修改
  • 原文地址:https://www.cnblogs.com/pfybk/p/14438413.html
Copyright © 2011-2022 走看看