zoukankan      html  css  js  c++  java
  • xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

    js & sort array object

    sort array object in js

    https://flaviocopes.com/how-to-sort-array-of-objects-by-property-javascript/

    let msgs = [
        {
          "senderUid": "6845484",
          "receiverUid": "6845481",
          "serialNum": "A 1564737163253",
          "msgId": 606896983568064500,
          "text": "xxxxx",
          "time": "17:11",
          "count": 1,
          "isSelf": true
        },
        {
          "senderUid": "6845484",
          "receiverUid": "6845481",
          "serialNum": "A 1564737283216",
          "msgId": 606897486704189400,
          "text": "zzzz",
          "time": "17:13",
          "count": 2,
          "isSelf": true
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564735983212",
          "msgId": 606892034444533800,
          "text": "C 文本消息 text 3",
          "time": "16:52",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564735426174",
          "msgId": 606889698041045000,
          "text": "C 文本消息 text 2",
          "time": "16:42",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564730001766",
          "msgId": 606866947376980000,
          "text": "C 文本消息 text 1",
          "time": "15:12",
          "count": 3
        },
    ];
    
    let log = console.log;
    
    // time format & msgId
    log(`msgs =`, JSON.stringify(msgs, null, 4));
    
    // 1. sort by id
    msgs.sort((a, b) => (a.msgId > b.msgId) ? 1 : -1);
    
    log(`msgs =`, JSON.stringify(msgs, null, 4));
    
    
    // 2. group time
    
    ???
    
    
    
    
    
    

    demo

    https://repl.it/@xgqfrms/date-format-and-5-minutes

    https://date-format-and-5-minutes.xgqfrms.repl.run/

    
    let msgs = [
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564735983212",
          "msgId": 606892034444533800,
          "text": "C 文本消息 text 3",
          "time": "16:52",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564735426174",
          "msgId": 606889698041045000,
          "text": "C 文本消息 text 2",
          "time": "16:42",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564730001766",
          "msgId": 606866947376980000,
          "text": "C 文本消息 text 1",
          "time": "15:12",
          "count": 3
        },
        {
          "senderUid": "6845484",
          "receiverUid": "6845481",
          "serialNum": "A 1564737163253",
          "msgId": 606896983568064500,
          "text": "xxxxx",
          "time": "17:11",
          "count": 1,
          "isSelf": true
        },
        {
          "senderUid": "6845484",
          "receiverUid": "6845481",
          "serialNum": "A 1564737283216",
          "msgId": 606897486704189400,
          "text": "zzzz",
          "time": "17:13",
          "count": 2,
          "isSelf": true
        }
    ];
    
    let log = console.log;
    
    // time format & msgId
    // log(`msgs =`, JSON.stringify(msgs, null, 4));
    
    // 1. sort by id
    
    // 2. group time
    
    const list = [
        {
            color: 'white',
            size: 'XXL',
            num: 3,
        },
        {
            color: 'red',
            size: 'XL',
            num: 1,
        },
        {
            color: 'black',
            size: 'M',
            num: 7,
        }
    ];
    
    log(`msgs =`, JSON.stringify(list, null, 4));
    
    
    list.sort((a, b) => (a.num > b.num) ? 1 : -1);
    
    log(`new msgs =`, JSON.stringify(list, null, 4));
    
    
    
    
    
    
    
    

    js date string to timestamp

    https://www.toptal.com/software/definitive-guide-to-datetime-manipulation

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

    https://stackoverflow.com/questions/18634087/how-to-convert-a-string-to-a-unix-timestamp-in-javascript

    
    
    
    

    bug

    OK

    
    // timestamp
    
    let t1 = new Date().getTime();
    let t11 = Date.parse('2019/08/02 18:54');
    
    let t2 = new Date("16:52");
    
    log(`t1 =`, t1);
    log(`t11 =`, t11);
    log(`t2 =`, t2);
    
    

    seconds

    autoGetToday

    
    
    const autoGetToday = (time = ``, debug = false) => {
        let log = console.log;
        let date = new Date();
        let year = date.getFullYear();
        let month = date.getMonth() + 1;
        let day = date.getDate();
        if (debug) {
            log(year);
            log(month);
            log(day);
        }
        let today = `${year}/${month}/${day} ${time}`;
        if (debug) {
            log(`today =`, today);
        }
        return today;
    };
    
    autoGetToday(`19:20`, true);
    
    
    
    

    five minutes

    
    let nowTime = Date.now();
    console.log(`nowTime =`, nowTime);
    
    let nowTime1 = Date.parse(`2019/08/02 17:18`);
    console.log(`nowTime1 =`, nowTime1);
    
    let nowTime2 = Date.parse(`2019/08/02 17:13`);
    console.log(`nowTime2 =`, nowTime2);
    
    let five = nowTime1 - nowTime2;
    console.log(`five =`, five);
    
    

    
    // mm, ss, ms
    const fiveMinutes = 5 * 60 * 1000;
    
    

    OK

    
    let msgs = [
        {
          "senderUid": "6845484",
          "receiverUid": "6845481",
          "serialNum": "A 1564737163253",
          "msgId": 606896983568064500,
          "text": "B",
          "time": "2019/08/02 17:11",
          "count": 1,
          "isSelf": true
        },
        {
          "senderUid": "6845484",
          "receiverUid": "6845481",
          "serialNum": "A 1564737283216",
          "msgId": 606897486704189400,
          "text": "A",
          "time": "2019/08/02 17:13",
          "count": 2,
          "isSelf": true
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564735983212",
          "msgId": 606892034444533800,
          "text": "C",
          "time": "2019/08/02 16:52",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564735426174",
          "msgId": 606889698041045000,
          "text": "D",
          "time": "2019/08/02 16:42",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564730001766",
          "msgId": 606866947376980000,
          "text": "E",
          "time": "2019/08/02 15:12",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564730001766",
          "msgId": 606866947376970000,
          "text": "G",
          "time": "2019/08/01 5:12",
          "count": 3
        },
        {
          "senderUid": "6845481",
          "receiverUid": "6845484",
          "serialNum": "C 1564730001766",
          "msgId": 606866947376910000,
          "text": "F",
          "time": "2019/08/01 15:12",
          "count": 3
        },
    ];
    
    let log = console.log;
    
    // time format & msgId
    // log(`msgs =`, JSON.stringify(msgs, null, 4));
    
    // 1. sort by id
    // asc & ascending
    // msgs.sort((a, b) => (a.msgId > b.msgId) ? 1 : -1);
    
    // desc & descending
    msgs.sort((a, b) => (a.msgId < b.msgId) ? 1 : -1);
    
    // log(`msgs =`, JSON.stringify(msgs, null, 4));
    
    
    // 2. group time
    // TODO  & groups
    let nowTime = Date.now();
    // log(`nowTime =`, nowTime);
    
    // mm, ss, ms
    const fiveMinutes = 5 * 60 * 1000;
    
    let DB = {};
    let len = msgs.length;
    
    let groupFlag = ``;
    if (msgs[0]) {
        groupFlag = Date.parse(msgs[0].time);
    }
    
    let cp_msgs = msgs;
    
    let finished = false;
    
    // group flag
    for (let i = 0; i < len; i++) {
        // filter
        let new_cp_msgs = cp_msgs.filter(
            (obj, k) => {
                let {
                    time,
                } = obj;
                if (time.includes(`/`)) {
                    time = Date.parse(time);
                } else {
                    let today = autoGetToday(time);
                    time = Date.parse(today);
                }
                let min = Math.abs(groupFlag - time);
                if (min <= fiveMinutes) {
                    // DB[i].push(obj);
                } else {
                    return obj;
                }
            }
        );
        if (cp_msgs.length <= 1 && finished) {
            break;
        } else {
            DB[i] = [];
        }
        // if (cp_msgs.length <= 1) {
        //     break;
        // }
        log(`cp_msgs =`, cp_msgs);
        for (let j = 0; j < cp_msgs.length; j++) {
            if (cp_msgs.length === 1) {
                finished = true;
            }
            let obj = cp_msgs[j];
            let {
                time,
            } = obj;
            if (time.includes(`/`)) {
                time = Date.parse(time);
            } else {
                let today = autoGetToday(time);
                time = Date.parse(today);
            }
            let min = Math.abs(groupFlag - time);
            if (min <= fiveMinutes) {
                DB[i].push(obj);
            } else {
                groupFlag = time;
                cp_msgs = new_cp_msgs;
                break;
            }
        }
    }
    
    const autoGetToday = (time = ``, debug = false) => {
        let log = console.log;
        let date = new Date();
        let year = date.getFullYear();
        let month = date.getMonth() + 1;
        let day = date.getDate();
        if (debug) {
            log(year);
            log(month);
            log(day);
        }
        let today = `${year}/${month}/${day} ${time}`;
        if (debug) {
            log(`today =`, today);
        }
        return today;
    };
    
    
    console.log(`DB groups =`, JSON.stringify(DB, null, 4));
    
    
    
    

    Flag Counter

    ©xgqfrms 2012-2020

    www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


  • 相关阅读:
    pytorch获取模型某一层参数名及参数值方式
    PyTorch源码解读之torchvision.models
    torch.nn.Conv2d()函数详解
    UCF101
    ipynb格式转换
    linux下的压缩与解压缩
    tomcat 部署的项目图片名字带中文
    恢复oracle误删除数据
    项目中遇到的分布式高并发情况及解决方案
    poi 导出复杂表头 execl
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/11290367.html
Copyright © 2011-2022 走看看