Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-02-2006, 16:47   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 11
XML-Daten im Array sortieren

Hallo Liste,

habe mal wieder ein kleines Problem, dass mich um den Verstand bringt. Ich lese für ein Projekt eine XML Datei aus. Die sieht wie folgt aus (gekürzt):

<?xml version"1.0"?>
<Gasfedern>
<Gasfeder ID="1" Kraft_Von='7' Kraft_Bis="200" Zuschlag="30" Hub_Von="10" Hub_Bis="150" Durchmesser="4/12" Durchmesser_ID="G"></Gasfeder>
<Gasfeder ID="2" Kraft_Von='10' Kraft_Bis="500" Zuschlag="30" Hub_Von="10" Hub_Bis="150" Durchmesser="4/12" Durchmesser_ID="G"></Gasfeder>
</Gasfedern>


das ganze schreibe ich dann in ein Array um auf die Daten besser zugreifen zu können... Soweit alles kein Problem..
Wenn ich mein Array nun sortieren möchte, dann bringt er mir leider die Sortierung als Alphanumerische Sortierung.. also 10,7 (bei den oberen Daten).

Die Werte werden also als Strings behandelt. Ich komm aber auf keine Lösung wie ich dem Ding sagen kann, dass es ZAHLEN sind. Number und ähnliches habe ich bereits versucht...

Entweder ist bin doof oder ich steh heute auf der Leitung (bitte Hilfe!!)

Hier mein Code-Teil:

gas_xml = new XML();
gas_xml.ignoreWhite = true;
gas_xml.load("gasfedern.xml");

// Lesevorgang
gas_xml.onLoad = function(status) {
if (status && this.loaded) {
anzahl = gas_xml.firstChild.childNodes.length;
trace(anzahl);
for (var i = 0; i<anzahl; i++){
xmlArray[i] = gas_xml.firstChild.childNodes[i].attributes.Kraft_von;
}
trace(xmlArray.join());
xmlArray.sort();
trace(xmlArray.join());
}
};

Gruss
Schnick
Schnick ist offline   Mit Zitat antworten
Alt 13-02-2006, 16:49   #2 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
nach was willst du's denn sonst sortiert haben!?
Das Problem ist, dass du mit dem:
PHP-Code:
for (var 0i<anzahli++){
xmlArray[i] = gas_xml.firstChild.childNodes[i].attributes.Kraft_von;

bereits ein nummerisch indiziertes Array erstellst!

xmlArray[1] = xxx
xmlArray[2] = xxx

und sortiert wird nach dem Index...
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 13-02-2006, 16:56   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 11
Eben.. ich will es aber nach den Inhalten haben. Also:

xmlArray[1] = 2
xmlArray[2] = 1
xmlArray[3] = 7
xmlArray[4] = 10

-> 1,2,7,10

die sort funktion bringt bei mir aber:

1,10,2,7

(was ja einer Text-Sortierung entspricht)

Gruss
Schnick
Schnick ist offline   Mit Zitat antworten
Alt 13-02-2006, 16:58   #4 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
PHP-Code:
for (var 0i<anzahli++){
xmlArray[i] = Number(gas_xml.firstChild.childNodes[i].attributes.Kraft_von);

__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 13-02-2006, 17:06   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 11
Ja.. das war auch meine Vermutung.. (und natürlich auch mein test).
Bring aber nix. Die Sortierung wird nicht verändert.

Ich blick echt nimmer durch. ich geh jetzt heim und schla mal drüber...

Danke aber schon mal..

Schnick
Schnick ist offline   Mit Zitat antworten
Alt 14-02-2006, 04:54   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
wie so oft, so hätte auch hier ein blick ins handbuch oder die suche im forum geholfen:
Code:
xmlArray = [];
xmlArray[0] = 2;
xmlArray[1] = 100;
xmlArray[2] = 50;
xmlArray[3] = 10;
//
// sortiert immer strings
trace(xmlArray.sort());
//
// richtig:
trace(xmlArray.sort(Array.NUMERIC));
// und für < flash7
function fSortNum(a, b) {
	return Number(a)>Number(b);
}
trace(xmlArray.sort(fSortNum));
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele