array parsen

Status
Niet open voor verdere reacties.

peba25

Gebruiker
Lid geworden
6 jul 2009
Berichten
70
Ik verkrijg in een fuctie een csv file. Deze ziet er als volgt uit;
1273061554.00|231.84,1273061555.00|231.89,1273061556.00|231.90,1273061557.00|231.86,1273061558.00|231.81,etc

ieder seconde komt er hier een timestamp|value bij (1273061558.00|231.81). ik heb een trend waar ik de data in presenteer maar wil graag eene selectie aan weergave maken.

Kan zo'n array van data mbv een javascript funtie geparsed worden zodat ik bv de eerste 20 timestamp|valeas is een var stop en vervolgens aan de trend aanbied?
Kan dit ook voor de laatste 20?

Alvast bedankt
 
1273061554.00|231.84,1273061555.00|231.89,1273061556.00|231.90,1273061557.00|231.86,1273061558.00|231.81
Wat is dat voor een variabele? :) Je hebt het over csv en dan zou het een string zijn, maar ook over een array in de titel van je vraag.

Hoe dan ook, met split() en join() kun je van een string een array maken en omgekeerd:
[JS]var s = '0,1,2,3,4,5,6,7';
var a = s.split(',');

var a = new Array(0,1,2,3,4,5,6,7);
var s = a.join(',');[/JS]
De array kun je met .slice knippen op de gewenste lengte: :)
[JS] var s = '0,1,2,3,4,5,6,7';
var a = s.split(',');

var a1 = a.slice(0,5);
var a2 = a.slice(-5);

var s1 = a1.join(',');
var s2 = a2.join(',');

document.writeln(s1 + '<br>' + s2);
// 0,1,2,3,4
// 3,4,5,6,7[/JS]
http://javascript-reference.info/#array
 
Wat is dat voor een variabele? :) Je hebt het over csv en dan zou het een string zijn, maar ook over een array in de titel van je vraag.

Hoe dan ook, met split() en join() kun je van een string een array maken en omgekeerd:
[JS]var s = '0,1,2,3,4,5,6,7';
var a = s.split(',');

var a = new Array(0,1,2,3,4,5,6,7);
var s = a.join(',');[/JS]
De array kun je met .slice knippen op de gewenste lengte: :)
[JS] var s = '0,1,2,3,4,5,6,7';
var a = s.split(',');

var a1 = a.slice(0,5);
var a2 = a.slice(-5);

var s1 = a1.join(',');
var s2 = a2.join(',');

document.writeln(s1 + '<br>' + s2);
// 0,1,2,3,4
// 3,4,5,6,7[/JS]
http://javascript-reference.info/#array

Bedankt,
Ja.. het is eigenlijk een string uit een csv file welke ik uit wil pluizen en hiervoor dacht ik er een array van moeten te maken.

het probleem wat ik heb is dat ik de string in een variabele probeer te stoppen met;
dit geeft enkel niet de string terug?

Code:
function ajax(url){
if (window.XMLHttpRequest){
 req= new XMLHttpRequest();
} else {
 req = new ActiveXObject("Microsoft.XMLHTTP")
}
req.open("GET",url,false);
req.send(nul);
return req.responsetext;
}


var x = eval(ajax('../csvdata/temp.csv?'+ new Date().getTime()));

alert(x);
 
[JS]function ajax(url) {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else {
req = new ActiveXObject("Microsoft.XMLHTTP");
};
req.open("GET",url,false);
req.send(null);
return req.responseText;
};

var x = ajax('../csvdata/temp.csv?'+ new Date().getTime());

alert(x);[/JS]
null met 2 ellen,
responseText met hoofdletter T,
en geen eval() om de ajax. :)

Met:
[js]var s1 = x.split(',').slice(0,20).join(',');

var s2 = x.split(',').slice(-20).join(',');[/js]
haal je dan de eerste of de laatste 20 uit de string. :)
 
Bedankt egel,

Het werkt!

Is het mogelijk om '../csvdata/temp.csv?' in; x = ajax('../csvdata/jan/temp.csv?'+ new Date().getTime()); afhankelijk van een variable te maken?
Dit zodat ik een keuze kan laten maken?
 
[JS]var locatie = "../csvdata/temp.csv"; //verander dit dan dus.

var x = ajax(locatie + '?' + new Date().getTime());
alert(x);[/JS]
 
[JS]var locatie = "../csvdata/temp.csv"; //verander dit dan dus.

var x = ajax(locatie + '?' + new Date().getTime());
alert(x);[/JS]

Bedankt Vegras, Het werkt. kan nu per maand gewenste map openen. No een vraagje over het pasen van een string;
Ik heb een string welke | separated is. kan ik zo'n string ophalen en in een variabelen stoppen als , separated?

Ik heb het gevonden...

Code:
var mystring = new String();
mystring = A;
B = mystring.replace("|",",");
 
Laatst bewerkt:
Bedankt Vegras, Het werkt. kan nu per maand gewenste map openen. No een vraagje over het pasen van een string;
Ik heb een string welke | separated is. kan ik zo'n string ophalen en in een variabelen stoppen als , separated?

Ik heb het gevonden...

Code:
var mystring = new String();
mystring = A;
B = mystring.replace("|",",");
 
Laatst bewerkt:
Het volgende;

Ik krijg mbv:
A = ajax('../hitt/csvdata/'+ mnd +'/ULave.csv?' + new Date().getTime())

bijvoorbeeld devolgende string binnen;

1273520064000.00|230.70,1273520125000.00|230.72,1273520185000.00|230.58,1273520245000.00|230.78,1273520305000.00|230.66,1273520365000.00|230.37,1273520425000.00|230.06

hiervan wil ik alleen steeds de tweede waarde nemen, de lengte bepalen en vervolgens een controle op deze waardes uitvoeren.

Dit is wat ik heb;

Code:
uit een vb functie
A = ajax('../hitt/csvdata/'+ mnd +'/ULave.csv?' + new Date().getTime())
update_cells(A, 0,settings['_GBLIL1MAX'][0],'currl1');


function update_cells(data, min, max, cellId) {
	var numExceeded = countExceeded(data, min, max);
	var percentageExceeded = numExceeded / data.length;
	var value = numExceeded //+ '/' + data.length + ' = ' + percentageExceeded;
	updateValue(cellId, value);
	}

function countExceeded(array, min, max) {
	var numExceeded = 0;
	for ( var i in array) {
		var value = array[i][1]; // [0] is timestamp, [1] is value
		if (value < min || value > max) {
			numExceeded++;
		}
	}
	return numExceeded;
}

Het probleem zit hem volgens mij in de string, maar krijg dit niet goed.

Heeft iemand misschien een idee..
 
Ben met join en split aan het proberen om bovenstaande string in een array te stoppen. Dit wil niet echt lukken...

Ik controleer het steeds met een alert.

Ik dacht zelf dat zoiets wel zou kunnen werken;

Code:
B = ajax('../hitt/csvdata/'+ mnd +'/ULave.csv?' + new Date().getTime())
var e = B.split('|');
var cc = new Array(e);

//var d = c.join(',');
alert (cc[0]);

Helaas werkt dit niet.. Iemand nog een suggestie??
Alvast bedankt.

toevoeging...
onderstussen ietsje verder om maar een beetje grip te krijgen....;
Ik probeer hier uit de array alleen steeds de value eruit te halen. DIt lukt niet!
met; var f = (Z[0][1]) kan ik wel een bepaalde waarde uit de array halen maar kan niet per definitie alleen de value (steeds 2 waarde) eruit halen......

Code:
B = ajax('../hitt/csvdata/'+ mnd +'/ULave.csv?' + new Date().getTime())
str1 = B.split('|');
str2 = str1.join(',');
str3 = str2.split(',');
Z = new Array(str3);
lth = (str1.length);

//for ( i in lth){
//alert (Z[0][1]);
//var f = (Z[0][i]);
//}

var f = (Z [0][1]);
alert (f);
 
Laatst bewerkt:
whow, whow, okay. Ik weet niet meer precies wat de vraag is, maar ik ga uit van deze:
bijvoorbeeld devolgende string binnen;

1273520064000.00|230.70,1273520125000.00|230.72,1273520185000.00|230.58,1273520245000.00|230.78,1273 520305000.00|230.66,1273520365000.00|230.37,1273520425000.00|230.06

hiervan wil ik alleen steeds de tweede waarde nemen, de lengte bepalen en vervolgens een controle op deze waardes uitvoeren.
Als je even logisch meedenkt met mn verhaal snap je het denk ik wel:

We nemen de string met getalletjes. Je wilt dat deze eerst gesplit worden op de VP (verticale pijp, dat | ding). Dus, dit wordt onze code:[JS]var str = "
1273520064000.00|230.70,1273520125000.00|230.72,1273520185000.00|230.58,1273520245000.00|230.78,1273 520305000.00|230.66,1273520365000.00|230.37,1273520425000.00|230.06";

var pipeArray = str.split('|');[/JS]
okay. Nu, je wilt door alle items heenloopen van deze array, en dan het 2e deel ervan, het deel achter de komma, gebruiken. Aanschouw:
[JS]var str = "
1273520064000.00|230.70,1273520125000.00|230.72,1273520185000.00|230.58,1273520245000.00|230.78,1273 520305000.00|230.66,1273520365000.00|230.37,1273520425000.00|230.06";

var pipeArray = str.split('|');

var i, current, l = pipeArray.length;

for(i=0; i<l; i++)
{
current = pipeArray; //iets van "###.##, #####.##"

current = current.split(',')[1] || current; //maak van current het 2e deel, dus 2e getal, OF als die niet bestaat het totaal (1e getal dus).

doeIetsMetWaarde(current); //check hier
}[/js]
 
1273520064000.00|230.70,1273520125000.00|230.72,1273520185000.00|230.58,1273520245000.00|230.78,1273520305000.00|230.66,1273520365000.00|230.37,1273520425000.00|230.06
De vorm is toch tijd0|waarde0,tijd1|waarde1,tijd2|waarde2 ?! :)

Dan moet je eerst op de komma splitten en daarna op de pipeline:
[js]var s = '1273520064000.00|230.70,1273520125000.00|230.72,1273520185000.00|230.58,1273520245000.00|230.78,1273520305000.00|230.66,1273520365000.00|230.37,1273520425000.00|230.06';
var a = s.split(',');
for (var i = 0; i < a.length; i++) a = a.split('|');

document.writeln(a[1][0] + '|' + a[1][1]);
// 1273520125000.00|230.72[/js]
 
De vorm is toch tijd0|waarde0,tijd1|waarde1,tijd2|waarde2 ?! :)

Dan moet je eerst op de komma splitten en daarna op de pipeline:
[js]var s = '1273520064000.00|230.70,1273520125000.00|230.72,1273520185000.00|230.58,1273520245000.00|230.78,1273520305000.00|230.66,1273520365000.00|230.37,1273520425000.00|230.06';
var a = s.split(',');
for (var i = 0; i < a.length; i++) a = a.split('|');

document.writeln(a[1][0] + '|' + a[1][1]);
// 1273520125000.00|230.72[/js]


Bedankt.. Ik moet nog veeeeeeeeell leren...
Het werkt. (inderdaad eerst de komma en dan de pipe).:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan