@ennet

Как найти пересекающие данные в массиве?

Есть массив услуг, элементы которого тоже массив. В нем есть начало, конец, рабочее место, мастер.

[[1443646800,1443649500,4,4],[1443646800,1443649500,4,1],[1443646800,1443649500,3,4],[1443646800,1443649500,3,1],[1443650400,1443669300,3,4],[1443650400,1443669300,4,1],[1443650400,1443669300,4,4],[1443650400,1443672000,3,1],[1443671700,1443690900,3,4],[1443671700,1443696300,4,4],[1443675600,1443680100,3,1],[1443675600,1443680100,4,1],[1443680700,1443690900,4,1],[1443680700,1443690900,3,1],[1443691800,1443696300,3,4],[1443691800,1443717000,4,1],[1443691800,1443724200,3,1],[1443700800,1443717000,4,4],[1443700800,1443717000,3,4],[1443721800,1443724200,3,4],[1443721800,1443724200,4,1],[1443721800,1443740400,4,4],[1443727800,1443733200,4,1],[1443727800,1443733200,3,1],[1443727800,1443740400,3,4],[1443736800,1443737700,4,1],[1443736800,1443737700,3,1],[1443738600,1443740400,3,1],[1443738600,1443740400,4,1]]


На выходе хотелось бы получить такой массив вида

[time: [[1443646800,1443649500],[1443646800,1443649500]], workstations : [1,5], workers: [1,3]]


где, time - это неповторяющиеся промежутки времени, workstations - массив рабочих мест , workers - массив работников

Не могу понять с чего начать? Я новичок в JS. КУда смотреть? Что в начале сравнивать ?
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@ennet Автор вопроса
Получилось решение таким
jsfiddle.net/m8vxw3tb/4

var result = {
    time: [],
    workstations : [],
    workers: []
};
for (var i = 0; i < data.length; ++i) {
    !~result.time.indexOf(JSON.stringify([data[i][0], data[i][1]])) && result.time.push(JSON.stringify([data[i][0], data[i][1]]));
    !~result.workstations.indexOf(data[i][2]) && result.workstations.push(data[i][2]);
    !~result.workers.indexOf(data[i][3])&& result.workers.push(data[i][3]);
}
console.log(result);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы