Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   подскажите алгоритм (https://javascript.ru/forum/misc/33409-podskazhite-algoritm.html)

kuzyara 22.11.2012 13:04

подскажите алгоритм
 
Имеется большой кусок данных вида:
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. Берутся из БД, в которой для экономии места удалены нулевые значения.

Подскажите, как вместо осутствующих значений подставить нули, с учетом того, что интервал может изменяться?

Ничего в голову не приходит:(

dmitriymar 22.11.2012 13:32

http://javascript.ru/Array/sort

ksa 22.11.2012 13:45

Цитата:

Сообщение от kuzyara
Подскажите, как вместо осутствующих значений подставить нули

Не совсем понятно зачем "ставить" нули?
Если значение отсутствует - так это проверяется... А что показывать это уже вопрос второй...

ksa 22.11.2012 13:53

Цитата:

Сообщение от kuzyara (Сообщение 217249)
Имеется большой кусок данных вида:
var data1 = [
[[1330150440,7],[1330150500,14],[1330150680,18],[1330150740,35],[1330150860,23],...],  // датчик1
[...],  // датчик2
[...],  // датчик3
...  // датчикN
];

По-мне так лучше тогда вот так хранить

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],
   ...
};

Aetae 23.11.2012 09:37

Имхо, обратный цикл в данном случае няшнее:
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, время: 00:23.