json 数据通过循环分类

新手上路,请多包涵

如何让 时间相差五分钟为一组。第二组以第一组第一个时间为准,求大佬帮忙。

阅读 1.6k
2 个回答

如果数据已经排序,其实就是一个遍历比较的过程。因为时间信息中有厘秒数,这里没有忽略厘秒,是比较的绝对值差是5分钟。

var sortX = function( inArr ){
    var rt=[];
    if(inArr.length==0) return rt;
    let tmp=[];
    tmp.push(inArr[0]);
    let sDate=inArr[0]["date"];
    for(let i=1;i<inArr.length;i++){
        let cObj=inArr[i];
        if( (cObj["date"]-sDate)>100*60*5 ){
            rt.push(tmp);
            tmp=[];
            sDate=cObj["date"];
        }
        tmp.push(cObj);    
    }
    rt.push(tmp);
    return rt;
}

ps:用代码代替图片

var now = Date.now();
var arr = [
    {date: now, time: '现在'},
    {date: now+1000*60*4, time: '4分钟后'},
    {date: now+1000*60*5, time: '5分钟后'},
    {date: now+1000*60*5+1, time: '5分钟1秒后'},
    {date: now+1000*60*7, time: '7分钟后'},
    {date: now+1000*60*11, time: '11分钟后'},
    {date: now+1000*60*19, time: '19分钟后'},
]
arr.reduce((res, v) => {
    var len = res.length;
    if(len && v.date-res[len-1][0].date<=5*60*1000) res[len-1].push(v);
    else (res[len] ||= []).push(v)
    return res;
}, [])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题