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是房间id
已解决
悬赏分:20
- 解决时间 2021-11-27 12:34
点赞 0反对 0举报 0
收藏 0
分享 0
回答1
最佳
-
- 排序,这样方便统计
- 判断当前和历史的戳是否连贯。连贯就++。不连贯就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