JSFiddle - React, Tailwind, and code Playground

by shtrih

HTML

<ul></ul>

JavaScript

var log = [
   { time: '19:00:42', login: 'логин1', start: 1  },
   { time: '18:50:52', login: 'логин2', start: 0  },
   { time: '18:40:32', login: 'логин1', start: 0  },
   { time: '18:30:31', login: 'логин2', start: 1  },
   { time: '18:20:30', login: 'логин1', start: 1  },
   { time: '18:10:28', login: 'логин3', start: 1  },
   { time: '18:00:28', login: 'логин4', start: 1  },
],
    ul = $('ul'),
    pair,
    pairs = {}
;
    
    // ищем сессии с концом
    for (var i = log.length-1; i >= 0; i--) {
        pair = find_pair(log[i], log.slice(0, log.length-1));
        if (pair && !pairs[pair] && !pairs[i]) {
            pairs[pair] = true;
            pairs[i] = true;
            ul.append(
                $('<li/>', {
                    text: log[i].login 
                        + ' start: ' + log[i].time
                        + '   end: ' + log[pair].time
                })
            );
        }
    }

    // выводим сессии, которые еще не кончились
    for (var i = log.length-1; i >= 0 ; i--) {
        console.log(i);
         if (!pairs[i] && log[i].start) {
             ul.append(
                $('<li/>', {
                    text: log[i].login 
                    + ' start: ' + log[i].time
                })
            );
         }
    }
    
    function find_pair(element, elements) {
        var result = false;
        for (var i in elements) {
            if (elements.hasOwnProperty(i)) {
                if (elements[i].login == element.login 
                    && elements[i].start < element.start) {
                    result = i;
                    break;
                }
            }
        }
        return result;
    }