подскажите алгоритм
Имеется большой кусок данных вида:
var data1 = [ [[1330150440,7],[1330150500,14],[1330150680,18],[1330150740,35],[1330150860,23],...], // датчик1 [...], // датчик2 [...], // датчик3 ... // датчикN ]; Как его превратить в: var data1 = [ [[1330150440,7],[1330150500,14],[1330150560,0],[1330150620,0],[1330150680,18],[1330150740,35],[1330150800,0],[1330150860,23],...], [...], [...], ... ]; Как вы уже догадались, это показания датчиков во времени с интервалом 60 секунд(unixtime) в формате(структуре данных) библиотеки для построения графиков jquery.flot.js. Берутся из БД, в которой для экономии места удалены нулевые значения. Подскажите, как вместо осутствующих значений подставить нули, с учетом того, что интервал может изменяться? Ничего в голову не приходит:( |
|
Цитата:
Если значение отсутствует - так это проверяется... А что показывать это уже вопрос второй... |
Цитата:
var data1 = [ { 1330150440: 7, 1330150500: 14, 1330150680: 18, 1330150740: 35, 1330150860: 23, ... }, // датчик1 {...}, // датчик2 {...}, // датчик3 ... {...}// датчикN ]; А лучше вообще вот как (если интервалы совпадают) var data1 = { 1330150440: [1,12,3,...,aN], 1330150500: [7,10,4,...,aN], 1330150680: [4,5,15,...,aN], ... }; |
Имхо, обратный цикл в данном случае няшнее:
function placeZero( data ){ var j = data.length; while(j--){ var arr = data[j], i = arr.length; while(--i){ var time1 = arr[i][0], time2 = arr[i-1][0]; while((time1-=60) !== time2) arr.splice(i,0,[time1,0]); } } } |
Часовой пояс GMT +3, время: 17:31. |