Elegante Loesung fuer Ass. Array gesucht
Sebastian K.
- javascript
Kann mir jemand einen tipp geben, wie ich einen uri string in ein ass array umwandeln kann, ohne das ich vorher die anzahl der folge arrays wissen muss:
etwa:
var sourceArr = new Array();
sourceArr[1] = 'http://www.something.com/some/people/info.html';
sourceArr[2] = 'file://c:/test/run.html';
..
var targetArr = new Array();
targetArr ['http://']['www.something.com']['some']['people']['info.html'] = 'http://www.something.com/some/people/info.html';
targetArr ['file://']['c:']['test']['run.html'] = 'file://c:/test/run.html';
..
..
Gruss,S.
@@Sebastian K.:
nuqneH
Kann mir jemand einen tipp geben, wie ich einen uri string in ein ass array umwandeln kann, ohne das ich vorher die anzahl der folge arrays wissen muss:
http://de.wikipedia.org/wiki/Deppenleerzeichen
http://de.selfhtml.org/javascript/objekte/location.htm
http://de.selfhtml.org/javascript/objekte/string.htm#split
Qapla'
Hm,
ich wusste ja, dass ich nicht so helle bin, aber wie soll ich das verstehen. Sehe wohl den Wald vor lauter Baeumen nicht? Split kenn ich location auch, das mit den d. leerzeichen sag mir nun nichts. Noch mal dumm gefragt, ich muesste doch fuer jeden Teilstring ueberpruefen, ob ein key schon im array vorliegt und wenn nicht, dann muss der Folgestring als "unter key" gesetzt werden usw.
Gruss, S.
@@Sebastian K.:
nuqneH
das mit den d. leerzeichen sag mir nun nichts.
URI-String, Folge-Arrays. Was war daran unverständlich?
Noch mal dumm gefragt, ich muesste doch fuer jeden Teilstring ueberpruefen, ob ein key schon im array vorliegt und wenn nicht, dann muss der Folgestring als "unter key" gesetzt werden usw.
Ja:
if (!targetArr['foo']) targetArr['foo'] = [];
if (!targetArr['foo']['bar']) targetArr['foo']['bar'] = [];
Was soll das Ganze eigentlich werden? Eine sinnvolle Datenstruktur?
Qapla'
Nun ja, Ziel davon ist es, eine Baum-Struktur der URI zu erstellen und dann ueber dom in verschiedenen XML varianten auszugeben.
<scheme value="http://">
<prepath value="www.something.com">
<folder value="...">
<file value="..."/>
</folder>
</prepath>
<scheme>
Ich bin leider nicht gar zu tief mit Javascript beschaeftigt, aber muss man bei rekursiven funktion eine variable mit uebergeben?
@@Sebastian K.:
nuqneH
Nun ja, Ziel davon ist es, eine Baum-Struktur der URI zu erstellen und dann ueber dom in verschiedenen XML varianten auszugeben.
?? Wozu?
<scheme value="http://">
<prepath value="www.something.com">
<folder value="...">
<file value="..."/>
</folder>
</prepath>
<scheme>
Wie kommst du darauf, der Pfad in einem URI hätte irgendwas mit Dateiordnern und Dateien zu tun? Das kann in einigen Fällen so sein, in vielen anderen nicht.
Und selbst wenn: Deine XML-Strukur erscheint mir nicht so richtig sinnvoll:
'scheme' würde ich 'protocol' nennen; 'prepath' würde ich 'host' (oder 'domain') nennen.
'host'/'domain' als Kind von 'protocol'? Eher nicht.
'@value' würde ich '@name' nennen, bei 'protocol' eher '@type'.
":" ist eher Trennzeichen als noch zum Protokollnamen gehörig.
"//" gehört auf keinen Fall zum Protokoll, sondern zum Pfad (Wurzel).
Ich bin leider nicht gar zu tief mit Javascript beschaeftigt, aber muss man bei rekursiven funktion eine variable mit uebergeben?
Muss man nicht. Wäre aber sinnvoll. Hauptsache, du findest eine Abbruchbedingung.
Qapla'
Ok, habe eine Loesung gefunden. War dann doch etwas einfacher als vermutet.
Trotzdem danke fuer die Hinweise. Dass mit den URI Bestandteilen war nur so schnell runtergeschrieben. Aber es waere in der Tat "http" als scheme; "www.de.com" als host und der Rest dann path.
Gruss, S.