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

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

     

     

  • 相关阅读:
    paddlex 使用-7 windows下脚本生成nb文件
    paddlex 使用-6 在Android下预测
    paddlex 使用-5 Andrdroid4.1报错插件无法删除
    paddlex 使用-4 format = EXTENSION[ext].6错误
    paddlex 使用-3 模型加载预测
    paddlex 使用-2 GUI版本
    paddlex 使用-1 安装
    企业微信登录态与显示姓名
    计算工龄(月份)的C#算法
    一个比较好用的Mongodb 工具
  • 原文地址:https://www.cnblogs.com/pfybk/p/14438413.html
Copyright © 2011-2022 走看看