Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-03-2005, 19:55   #1 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Array vergleichen - aber wie?

Nabend!

Also ich bin ein bischen Ratlos was das vergleichen von Array angeht.

Folgendes Array:

Code:
 _global.zweiteSortierung[_global.cs] = {
         Stoff: ArrToLookAt[i].Stoff,
         Faß: parseFloat(ArrToLookAt[i].Faß),
         Großgebinde: parseFloat(ArrToLookAt[i].Großgebinde),
         Kleingebinde: parseFloat(ArrToLookAt[i].Kleingebinde),
         Kleinstgebinde: parseFloat(ArrToLookAt[i].Kleinstgebinde),  
         Sack: parseFloat(ArrToLookAt[i].Sack),
         Beutel: parseFloat(ArrToLookAt[i].Beutel)};
Das Array wird korrekt gefüllt!

Nun soll folgendes getan werden: Die Bezeichnungen bei "Stoff" können identisch sein oder nicht. Sind die Namen identisch muss das eine Feld mit dem anderen addiert werden, also die Integer Werte von Faß bis Sack müssen addiert werden.

Code:
function ZweiteSortierfunktion(){
 for(var i=0; i < _global.zweiteSortierung.length; i++){

 _global.uebereinstimmung = false;
 
 for(var s = 0; s < _global.zweiteSortierungArray.length; s++){
      trace(_global.zweiteSortierungArray[s].Stoff + "  -  " + _global.zweiteSortierung[i].Stoff);

      if(  _global.zweiteSortierung[i].Stoff == _global.zweiteSortierungArray[s].Stoff){
         trace("Übereinstimmung bei: " + _global.zweiteSortierungArray[s].Stoff);
	 _global.uebereinstimmung = true;

       }else{
     
         _global.uebereinstimmung = false;
  }
 }
  trace("-----");

  if(_global.uebereinstimmung == false || _global.zweiteSortierungArray.length == 0){
	 _global.zweiteSortierungArray[_global.zweiteSortierungArray.length] = {
			    
                                    Stoff: _global.zweiteSortierung[i].Stoff,
                                    Faß: parseFloat(_global.zweiteSortierung[i].Faß),
		                    Großgebinde: parseFloat(_global.zweiteSortierung[i].Großgebinde),
		                    Kleingebinde: parseFloat(_global.zweiteSortierung[i].Kleingebinde),
		                    Kleinstgebinde: parseFloat(_global.zweiteSortierung[i].Kleinstgebinde),
		                    Sack: parseFloat(_global.zweiteSortierung[i].Sack),
		                    Beutel: parseFloat(_global.zweiteSortierung[i].Beutel)}; 	  
  }
 }
}
Im Prinzip gibt mir das erste Trace auch korrekt die Daten aus. Also wenn ein Stoff mit dem gleichen Namen auftaucht, steht bei trace = STOFFXY STOFFXY. Eigentlich müsste nun die IF schleife die direkt danach folgt auf true umspringen und eine "Übereinstimmung" ausgeben. Tut sie aber nicht.

Wer weiß Rat?

Danke,
Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 30-03-2005, 20:29   #2 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
probier mal beide Werte zuerst in je eine Stringvaríable abzuspeichern und die dann vergleichen, hat bei mir bei ähnlichen Problemen oft geholfen

mfg
Clemens
Clemenses ist offline   Mit Zitat antworten
Alt 30-03-2005, 22:15   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
das hat nichts mit dem array zu tun. schmeiss das da raus:

}else{
_global.uebereinstimmung = false;

wie du es jetzt hast wird immer der zustand der letzten for-schleife ermittelt.

---------------
versuch mal mit dem debugger von flash klar zu kommen:
- vor eine programmzeile klicken (==roter punkt)
- im menü "debuggen" aufrufen
- auf den grünen pfeil klicken
- im swf etwas machen (der programmablauf hält beim roten punkt)
- links die objekte auswählen, variable, interne... mal alles ansehen!
mit dem debugger kann man sein programm schrittweisse abarbeiten und in
alle variable reinsehen. also genau das richtige auch für einsteiger!
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 31-03-2005, 07:55   #4 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Zitat:
Zitat von hgseib
mit dem debugger kann man sein programm schrittweisse abarbeiten und in
alle variable reinsehen. also genau das richtige auch für einsteiger!
Wie man mit einem Debugger umgeht weiß ich, danke. Der Debugger springt erst garnicht in die IF Schleife hinein, auch wenn zwei gleiche Namen auftauchen und er es doch tun sollte.

Das jeweilige Wort aus dem Array als String abzuspeichern brachte leider auch nicht das gewünschte Ergebnis.

Hoffe ihr habt noch ein paar Ideen woran es liegen könnte.

Danke,
Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 31-03-2005, 13:26   #5 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
weiß denn niemand einen Rat für mich? Wäre echt dringend, danke!

Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 31-03-2005, 14:50   #6 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Habe eine Lösung gefunden:

if( _global.zweiteSortierung[i].Stoff + "" == _global.zweiteSortierungArray[s].Stoff + "")

Kann mir nur erklären das die IF Schleife denkt das durch die angehängten Anführungszeichen ein String verglichen werden soll.

Gruß Christian
Utopian 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 12:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele