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;
}