Вы можете уменьшить массив данных в отдельные объекты, каждый из которых представляет период, а затем записать их.Короткий способ получить период - просто вырезать из поля даты все, что не нужно, и добавить 0.
, что даст интервалы от x: 30: 00.000 до x: 39: 59.999, поэтому исключая x: 40: 00.000 Вы можете проанализировать дату в объекте фактической даты, если вам нужно более детально контролировать, какой элемент принадлежит тому или иному периоду, как вы показываете при округлении времени до ближайших 10 минут в будущем.
Итак, после исправления неверного формата исходных данных я получаю следующее:
const data = [
{"deviceid":"d1", "parameter":"p1", "value":"1", "timestamp":"2018-03-22T12:33:00"},
{"deviceid":"d1", "parameter":"p2", "value":"2", "timestamp":"2018-03-22T12:34:00"},
{"deviceid":"d1", "parameter":"p2", "value":"3", "timestamp":"2018-03-22T12:35:00"},
{"deviceid":"d2", "parameter":"p1", "value":"4", "timestamp":"2018-03-22T12:36:00"},
{"deviceid":"d2", "parameter":"p2", "value":"5", "timestamp":"2018-03-22T12:37:00"},
{"deviceid":"d2", "parameter":"p2", "value":"6", "timestamp":"2018-03-22T12:38:00"},
{"deviceid":"d2", "parameter":"p1", "value":"7", "timestamp":"2018-03-22T12:43:00"},
{"deviceid":"d2", "parameter":"p1", "value":"8", "timestamp":"2018-03-22T12:44:00"},
{"deviceid":"d2", "parameter":"p2", "value":"9", "timestamp":"2018-03-22T12:45:00"},
{"deviceid":"d1", "parameter":"p1","value":"10", "timestamp":"2018-03-22T12:46:00"},
{"deviceid":"d1", "parameter":"p1", "value":"11", "timestamp":"2018-03-22T12:47:00"},
{"deviceid":"d1", "parameter":"p2", "value":"12", "timestamp":"2018-03-22T12:49:00"}
];
const hash_intervals = data.reduce(( intervals, item ) => {
const interval = `|${ item.deviceid }|${ item.timestamp.slice( 0, 15 ) }0|`;
if ( !intervals[ interval ] ) intervals[ interval ] = {};
intervals[ interval ][ item.parameter ] = item.value;
return intervals;
}, {});
Object
.entries( hash_intervals )
.forEach(([ interval, items ]) => console.log( `${ interval }${ Object.values( items ).join( '|' ) }` ));