Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-01-2005, 15:16   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 51
Array vergleichen, Neuling

Hi Leute, folgende Situation, ich habe ein Array was wie folgt aussieht:
PHP-Code:
ArrayEins[wert1,wert2,wert3.....wertn
Außer Wert1 sind alle Werte entweder "true" oder "false".
Jetzt habe ich noch ein Array das fast genauso aussieht.
PHP-Code:
ArrayZwei[k][wert1,wert2,wert3.....wertn
u ist die Zählervariable, da ArrayZwei aus einem XML Dokument erstellt worden ist.

Ich möchte nun ArrayEins mit ArrayZwei vergleichen, es sind aber nur die "true" - Werte von ArrayEins von Bedeutung.

z.B.: Wenn der wert2 von ArrayEins "true" ist, so sollen alle Inhalte von ArrayZwei ausgegeben werden wo ArrayZwei an der Stelle wert2 ebenso "true" ist, das soll auch kombiniert mit mehreren "true" - Werten aus ArrayEins funktionieren.

Leider bin ich noch ziemlich am Anfang mit AS und scheitere völlig.
Wenn ihr mit helfen könnt, dann bitte mit kleiner Beschreibung
macom500 ist offline   Mit Zitat antworten
Alt 10-01-2005, 15:35   #2 (permalink)
mentally ill
 
Registriert seit: Aug 2004
Beiträge: 172
ok,

ich versuche es mal

PHP-Code:
for (0ArrayEins.lengthi++) {
    for (
0ArrayZwei.lengtha++) {
        if ((
ArrayEins[i] == true) && (ArrayZwei[a][i] == true)) trace ("true wurde in ArrayEins an Stelle " " und in ArrayZwei an Stelle " " gefunden!");
    }

hoffe das funzt so aus m ff...

grüße
markus
__________________
there is no place like 127.0.0.1
--------------------------------------------------
[STUFF] E-Mail Liste für Newsletter o.ä.
[STUFF] MySQLConnector Klasse
menty ist offline   Mit Zitat antworten
Alt 10-01-2005, 15:49   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 51
SUPER! du bist meine Rettung
macom500 ist offline   Mit Zitat antworten
Alt 10-01-2005, 15:54   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 51
Aber wie ändere ich das er mir wenn es mehr Übereinstimmungen gibt, mir diese nicht doppelt ausgibt.
macom500 ist offline   Mit Zitat antworten
Alt 10-01-2005, 16:04   #5 (permalink)
mentally ill
 
Registriert seit: Aug 2004
Beiträge: 172
weiss nicht genau was du meinst.
welche doppelten werte?


wenn z.b.
ArrayEins[4] = true
und
ArrayZwei[2][4] = true
ArrayZwei[5][4] = true

oder

ArrayEins[2] = true
ArrayEins[4] = true
und
ArrayZwei[3][2] = true
ArrayZwei[3][4] = true

???

also wenn er schon ein true aus der element reihe hat oder wenn es generell doppelt vorkommt?
__________________
there is no place like 127.0.0.1
--------------------------------------------------
[STUFF] E-Mail Liste für Newsletter o.ä.
[STUFF] MySQLConnector Klasse
menty ist offline   Mit Zitat antworten
Alt 10-01-2005, 16:59   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 51
In ArrayEins sind z.B. die Eigenschaften die der User festgelegt hat, und im ArrayZwei z.B. Eigenschaften von Handys (mms=true,umts=false).

Dann soll verglichen werden.
Jetzt kann es natürlich sein das der User nach einem Handy sucht welches umts und mms kann, wenn das der Fall ist wird das genannte Gerät dann zweimal ausgegeben.

Einmal mit dem Wert mms = true und umts = true.
macom500 ist offline   Mit Zitat antworten
Alt 11-01-2005, 07:24   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 51
brauche nochmal hilfe.

wie folgt:
mein SuchArray
PHP-Code:
_global.suchAnfrage = [tmp0,tmp1,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15]; 
soll verglichen werden mit: (aus XML erstellt)
PHP-Code:
_global.artikelArray[id] = [nr,name,y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15];
(
mehrdimensional
Vergleich:
PHP-Code:
for (2_global.suchAnfrage.lengthi++) {
        for (
0_global.artikelArray.lengtha++) { 
            if ((
_global.suchAnfrage[i] == "true") && (_global.artikelArray[a][i] == "true")) {
            
            
trace ("In Frage kommt " _global.artikelArray[a][1] + " !"); 
        }
     } 

Das funktioniert auch, er bringt mir die richtigen aufgezählt.
Aber ein Fehler ist noch:

z.B.: _global.suchAnfrage = [tmp0,tmp1,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x1 2,x13,x14,x15];
nehmen wir an nur x0 und x1 sind true, alle anderen false

_global.artikelArray[id] = [nr,name,y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12, y13,y14,y15];
es sind 3 Dimensionen (0,1,2)
für _global.artikelArray[0] sind y0 true, alle anderen false
für _global.artikelArray[1] sind y0 und y1 true, alle anderen false
für _global.artikelArray[2] sind alle anderen

bei dieser Situation gibt er mir alle aus die auf die if Schleife passen, aber leider auch die wo auch
nur eins passt.
Aber in dem Beispiel soll nur _global.artikelArray[1] passen!
macom500 ist offline   Mit Zitat antworten
Alt 11-01-2005, 10:16   #8 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
bitte schön macom..

ActionScript:
  1. //array, dass als grundlage dient..
  2. arrX = [false, false, true, true, false, false, true, false, true];
  3.  
  4. arrX1 = [true, true, true, false, false, false, true, false, false];
  5. arrX3 = [false, false, true, true, false, false, true, false, true];
  6. arrX2 = [false, true, false, false, false, true, true, true, false];
  7.  
  8.  
  9. function compareArrForMacom(){
  10.   var tmpy;
  11.   var anzahl = 3;
  12.   for(var j=0; j<arrX.length; j++){
  13.       var comp = arrX[j];
  14.       for(var k=1; k<=anzahl; k++){
  15.           var str = 'arrX'+k;
  16.           var a = this[str];
  17.           var e = a[j];
  18.           if(e != comp && k<anzahl){ k++; if(tmpy == str){ tmpy = null;}}else{ tmpy=str;}
  19.       }
  20.   }
  21.   return tmpy;
  22. }
  23.  
  24. trace(compareArrForMacom());
  25.  
  26.  
  27. // oder...
  28. var ergebnis = compareArrForMacom();
  29. trace('Ergebnis : '+ergebnis);




greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 11-01-2005, 10:31   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
fast vergessen...wenn mehr als eines zutrifft, dann:
ActionScript:
  1. // das original
  2. arrX = [false, false, true, true, false, false, true, false, true];
  3.  
  4.  
  5. // hier müsste jetzt arrX3 und arrx5 richtig sein in vergleich zu arrX
  6. arrX1 = [true, true, true, false, false, false, true, false, false];
  7. arrX3 = [false, false, true, true, false, false, true, false, true];
  8. arrX2 = [false, true, false, false, false, true, true, true, false];
  9. arrX4 = [true, true, true, false, false, false, true, false, false];
  10. arrX5 = [false, false, true, true, false, false, true, false, true];
  11.  
  12. function compareArrForMacom(){
  13.   var val=0;
  14.   var tmpy=[];
  15.   var anzahl = 5;
  16.   for(var j=0; j<arrX.length; j++){
  17.       var orig = arrX[j];
  18.       for(var k=1; k<=anzahl; k++){
  19.           var str = 'arrX'+k;
  20.           var a = this[str];
  21.           var compArr = a[j];
  22.           if(compArr != orig && k<anzahl){
  23.              k++;
  24.              for(var s=0; s<val;s++){
  25.                  if(tmpy[s] == str){ tmpy.splice(s, 1);}
  26.              }
  27.           }else{
  28.              for(var s=0; s<val;s++){
  29.                  if(tmpy[s] == str){ tmpy.splice(s, 1);}
  30.              }
  31.              tmpy.push(str);val++
  32.           }
  33.     
  34.       }
  35.   }
  36.   return tmpy;
  37. }
  38.  
  39. trace(compareArrForMacom());




greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 11-01-2005, 10:52   #10 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 51
Danke erstmal für deine Bemühungen. Echt super das Forum.
Aber irgendwie scheint das doch noch nicht zu funktionieren, er soll nur die DatenArrays rauswerfen die in dem VergleichsArray bei den true feldern auch true haben.
Alle anderen Felder interessieren da nicht.
z.B.: (das VergleichsArray)
PHP-Code:
arrX = [truetruefalsefalsefalsefalsefalsefalsefalse]; 
Die DatenArrays:
PHP-Code:
arrX1 = [truetruetruefalsefalsefalsetruefalsefalse]; 
arrX3 = [falsefalsetruetruefalsefalsetruefalsetrue]; 
arrX2 = [falsetruefalsefalsefalsetruetruetruefalse]; 
arrX4 = [truetruetruefalsefalsefalsetruefalsefalse]; 
arrX5 = [falsefalsetruetruefalsefalsetruetruetrue]; 
Hier soll als Ergebnis arrX1 und arrX4 in Frage kommen.
Also er darf nicht die DatenArrays anzeigen bei denen in den "true" Feldern von arrX ein false steht.
(auch kein einzelnes Feld)
macom500 ist offline   Mit Zitat antworten
Alt 11-01-2005, 11:22   #11 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
axo...sagt das doch...

moment...




greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 11-01-2005, 11:23   #12 (permalink)
mentally ill
 
Registriert seit: Aug 2004
Beiträge: 172
hi,

dann musst du erst abfragen welche elemente aus dem vergleichsArray true sind, diese dann in einem seperaten array zwischenspeichern mit positionsnummer im vergleichsarray.

danach fragst du mit ner for schleife ab welche arrays alle übereinstimmen mit der ersten position von true aus dem vergleichsarray und diese in einem temporären array zwischen speichern.

danach dann dieses temporäre array wieder mit ner for schleife durchforsten nach dem zweiten true aus dem vergleichsarray und diese ergebnisse dann entweder wieder in nem temp. array zwischen speichern u.s.w. oder du löscht alle elemente des temporären arrays die nicht true an der stelle haben.

das wiederholst du dann für alle trues aus dem array mit dem positionsnummern.


hab leider mom. stress auf der arbeit, sonst würd ich dir das proggen... sorry.

evt. schaffe ich es heute nachmittag oder heute abend.


grüße
markus
__________________
there is no place like 127.0.0.1
--------------------------------------------------
[STUFF] E-Mail Liste für Newsletter o.ä.
[STUFF] MySQLConnector Klasse
menty ist offline   Mit Zitat antworten
Alt 11-01-2005, 13:38   #13 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
schau mal und probier mal das hier...
[es sollte hier arrX1, arrX2 und arrX4 rauskommen]
ActionScript:
  1. arrX = [false, true, false, false, false, false, false, false, false];
  2.  
  3. arrX1 = [false, true, true, false, false, false, true, false, false];
  4. arrX3 = [false, false, true, true, false, false, true, false, true];
  5. arrX2 = [true, true, false, false, false, true, true, true, false];
  6. arrX4 = [false, true, true, false, false, false, true, false, false];
  7. arrX5 = [false, false, true, true, false, false, true, true, true];
  8.  
  9.  
  10.  
  11.  
  12.  
  13. function compareForMacom(){
  14.   var returnArr=[];
  15.   var anzahl = 5;
  16.   var origNum =[];
  17.   copyNum=[];
  18.   copyNum[0] = null;
  19.  
  20.   function setNums(a, p, s){
  21.            var i=0;
  22.            while(i<a.length){
  23.                  if(a[i]) p.push(i);
  24.                  if(a[i] && s){
  25.                     if(elementOf(i)) returnArr.push(s);
  26.                  }
  27.                  i++;
  28.            }
  29.            trace('element = '+s+' länge = '+p);
  30.   }
  31.   function elementOf(val){
  32.            for(var j=0; j<origNum.length; j++){
  33.                if(origNum[j] == val) return true;
  34.            }
  35.            return false;
  36.   }
  37.   setNums(arrX, origNum);
  38.   for(var i=1; i<=anzahl; i++){
  39.       var str = 'arrX'+i;
  40.       var tmpArr =this[str];
  41.       copyNum[i] = [];
  42.       setNums(tmpArr, copyNum[i], str);
  43.   }
  44.       
  45.   return returnArr;
  46. }
  47.  
  48.  
  49. trace(compareForMacom());


und gib mal bescheid, ob es das richtige für dich ist



greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 11-01-2005, 18:54   #14 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 51
danke, ich schau mir das morgen auf arbeit an
macom500 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