选日期的时候提取相邻的日期天数?

checkList:\[  
    {  
        date:'2019-01-01',  
        num:1,  
        roomId:1  
    },  
    {  
        date:'2019-01-02',  
        num:1,  
        roomId:1  
    },  
    {  
        date:'2019-01-03',  
        num:1,  
        roomId:1  
    },  
    {  
        date:'2019-01-05',  
        num:1,  
        roomId:1  
    },  
    {  
        date:'2019-01-03',  
        num:1,  
        roomId:2  
    },  
    {  
        date:'2019-01-04',  
        num:1,  
        roomId:2  
    }  
\],  
checkList2:\[  
    {  
        date:'2019-01-01',  
        num:3,  
        roomId:1  
    },  
    {  
        date:'2019-01-05',  
        num:1,  
        roomId:1  
    },  
    {  
        date:'2019-01-03',  
        num:2,  
        roomId:2  
    }  
\]  

最终我想把list这个初始数据变成list2这样的数据要怎么弄,num是天数,roomId是房间idQQ截图20191231172213.png

已解决 悬赏分:20 - 解决时间 2021-11-27 12:34
反对 0举报 0 收藏 0

回答1

最佳
  • @

    image.png

    1. 排序,这样方便统计
    2. 判断当前和历史的戳是否连贯。连贯就++。不连贯就push
    checkList=[  
        {  
            date:'2019-01-01',  
            num:1,  
            roomId:1  
        },  
        {  
            date:'2019-01-02',  
            num:1,  
            roomId:1  
        },  
        {  
            date:'2019-01-03',  
            num:1,  
            roomId:1  
        },  
        {  
            date:'2019-01-05',  
            num:1,  
            roomId:1  
        },  
        {  
            date:'2019-01-03',  
            num:1,  
            roomId:2  
        },  
        {  
            date:'2019-01-04',  
            num:1,  
            roomId:2  
        }  
    ].sort((n,m)=>{
        var roomIdsort = n.roomId - m.roomId
        return roomIdsort?roomIdsort:(n.date<m.date?-1:1)
    }).reduce((s,v)=>{
        if(s.last && (s.last.roomId == v.roomId) && (new Date(v.date)-new Date(s.last.date)<=1000*60*60*24*s.last.num)){
            s.last.num++    
        }else{
            s.last = v;
            s.list.push(v)
        }
        return s
    }, {list: [], last: {}})
    支持 0 反对 0 举报
    2021-11-27 08:59