Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-02-2008, 08:33   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
Question search in array

Hallo, Guten Morgen.
Ich möchte gerne eine kl. search funktion schreiben, bei dem mehrerer Arrays nach einem bestimmten string durchsucht werden, und als rückgabe wert (wenn der string gefunden wurde) den namen des Arrays.

Jedes Array steht nähmlcih für einen mc (inhalt eine flv datei) , der dann, wenn die suchabfrage zutrifft, auf due Bühne plaziert wird.

kann mir da jemand weiterhelfen, bzw nen tip geben.

bitte danke
hoha

PHP-Code:
//hier die einzelnen arrays die durchsucht werden sollen
a_Lebenslauf_0 = new Array("Markus","Ralf","Günter","Horst");
a_Lebenslauf_1 = new Array("Markus","Ralf","Horst","Günter","leo");
a_Lebenslauf_2 = new Array("Horst","Markus","Ralf","Günter","leo","Isa");
a_Lebenslauf_3 = new Array("Horst","Markus","Ralf","Günter","Isa");
a_Lebenslauf_4 = new Array("Markus","Ralf","Günter");

//ich hab wohl eine suchabrage bei der der Indizis ausgegeben wird, aber eben nicht der name des arrays

Array.prototype.search = function(s) {
    if (
!= null) {
        for (var 
l in this) {
            if (
this[l].indexOf(s) != -1) {
                if (!
t) {
                    var 
= [];
                }
                
t.push(l);
                }
            }
            if (
t) {
                return 
t;
            }
        }
    };
    
ASSetPropFlags(Array.prototype"search",1,0);

//und hier die suchabrage
for (f=0f<5f++) {
dername _root['a_Lebenslauf_'+f];
res dername.search(Isa);
trace(res);

flatripe ist offline   Mit Zitat antworten
Alt 17-02-2008, 08:44   #2 (permalink)
mushroom powered
 
Benutzerbild von b.asile
 
Registriert seit: Jun 2005
Ort: Amsterdam
Beiträge: 2.649
Wenn du die funktion als Protoype registrierst brauchst du ja nur this zurueckgeben und du hast eine Referenz auf dein Array!

Cheers b.asile
__________________
[ WHEN THE GOING GETS WEIRD THE WEIRD TURN PRO ]

devboy.org
b.asile ist offline   Mit Zitat antworten
Alt 17-02-2008, 08:57   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
hmm, wenn ich bei der abfrage ein
trace(this.name);
reinsetze gibt er mir ein undefined,
und das natürlich bei jedem array (die schleife durchsucht ja alle)

- irgendwie geht des net - da ja nur die array namen ausgegeben werden sollen, bei denen der gesuchte string vorkommt.. hmm --
flatripe ist offline   Mit Zitat antworten
Alt 17-02-2008, 09:02   #4 (permalink)
mushroom powered
 
Benutzerbild von b.asile
 
Registriert seit: Jun 2005
Ort: Amsterdam
Beiträge: 2.649
Zitat:
Zitat von flatripe Beitrag anzeigen
hmm, wenn ich bei der abfrage ein
trace(this.name);
reinsetze gibt er mir ein undefined,
und das natürlich bei jedem array (die schleife durchsucht ja alle)

- irgendwie geht des net - da ja nur die array namen ausgegeben werden sollen, bei denen der gesuchte string vorkommt.. hmm --
Das Array kennt seinen Namen nicht.
Jetzt checke ich das du den Namen haben willst um an die MCs ranzukommen.

Ist nicht ganz so schoen ...

aber machs doch so:

PHP-Code:
var array : Array = new Array(bla,bla,bla);
array[
"mc_name"] = "hugo";

......


trace(res["mc_name"]); 
__________________
[ WHEN THE GOING GETS WEIRD THE WEIRD TURN PRO ]

devboy.org
b.asile ist offline   Mit Zitat antworten
Alt 17-02-2008, 09:15   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
hmm, mit diesem konstrukt ist ebenfalls wieder ein undefined
PHP-Code:
var array : Array = new Array();
array[
"a_Lebenslauf_0"] = "Markus","Ralf","Günter","Horst";
array[
"a_Lebenslauf_1"] = "Markus","Ralf","Horst","Günter","leo";
array[
"a_Lebenslauf_2"] = "Horst","Markus","Ralf","Günter","leo","Isa";
array[
"a_Lebenslauf_3"] = "Horst","Markus","Ralf","Günter","Isa";
array[
"a_Lebenslauf_4"] = "Markus","Ralf","Günter";

for (
f=0f<5f++) {
dername _root['a_Lebenslauf_'+f];
res dername.search(ichsuche);
trace(res["mc_name"]);  

flatripe ist offline   Mit Zitat antworten
Alt 17-02-2008, 09:42   #6 (permalink)
mushroom powered
 
Benutzerbild von b.asile
 
Registriert seit: Jun 2005
Ort: Amsterdam
Beiträge: 2.649
Zitat:
Zitat von flatripe Beitrag anzeigen
hmm, mit diesem konstrukt ist ebenfalls wieder ein undefined
Meinte das anders ...:

PHP-Code:
//hier die einzelnen arrays die durchsucht werden sollen
a_Lebenslauf_0 = new Array("Markus","Ralf","Günter","Horst");
a_Lebenslauf_0["mc_name"] = "a_Lebenslauf_0";


....


res dername.search(Isa);
trace(res["mc_name']);

Aber warum speicherst du nicht einfach das array in deinem movieclip und fragst dann nur pro mc ab und laesst dir dann ein true/false zurueckgeben???
__________________
[ WHEN THE GOING GETS WEIRD THE WEIRD TURN PRO ]

devboy.org

Geändert von b.asile (17-02-2008 um 09:43 Uhr)
b.asile ist offline   Mit Zitat antworten
Alt 17-02-2008, 09:51   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Wieso nicht so etwas?
ActionScript:
  1. function simpleSearch(array:Array, string:String):Boolean {
  2.   for (var i:Number = 0; i<array.length; i++) {
  3.     if (array[i] == string) {
  4.       return true;
  5.     }
  6.   }
  7.   return false;
  8. }
Omega Psi ist offline   Mit Zitat antworten
Alt 17-02-2008, 09:52   #8 (permalink)
mushroom powered
 
Benutzerbild von b.asile
 
Registriert seit: Jun 2005
Ort: Amsterdam
Beiträge: 2.649
Zitat:
Zitat von Omega Psi Beitrag anzeigen
Wieso nicht so etwas?
ActionScript:
  1. function simpleSearch(array:Array, string:String):Boolean {
  2.   for (var i:Number = 0; i<array.length; i++) {
  3.     if (array[i] == string) {
  4.       return true;
  5.     }
  6.   }
  7.   return false;
  8. }
Jap das meinte ich

ActionScript:
  1. function simpleSearch(array:Array, string:String):Boolean {
  2. var ret : Boolean = false
  3. for (var i:Number = 0; i<array.length; i++) {
  4.     if (array[i] == string) {
  5.       ret = true;
  6.       break;
  7.     }
  8.   }
  9.   return ret;
  10. }
__________________
[ WHEN THE GOING GETS WEIRD THE WEIRD TURN PRO ]

devboy.org

Geändert von b.asile (17-02-2008 um 09:53 Uhr)
b.asile ist offline   Mit Zitat antworten
Alt 17-02-2008, 09:56   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
@flatripe: das hat den Vorteil, dass du dich bei keinem Array darum kümmern musst, ob ein Array einen Namen hat oder nicht.
Omega Psi ist offline   Mit Zitat antworten
Alt 17-02-2008, 09:59   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
hmm, das ergebnis ist wieder ein undefined.
wie schon zuvor
das gibts a net.
Was mach ich da falsch.. hmmm

kann das sein das es an den vielen funktionen liegt?



PHP-Code:

function simpleSearch(array:Array, string:String):Boolean {

var 
ret Boolean false

for (var 
i:Number 0i<array.lengthi++) {

 if (array[
i] == string) {
            
ret true;
            break;
          }
        }
        return 
ret;
      } 
    
    
    
//hier die einzelnen arrays die durchsucht werden sollen
a_Lebenslauf_0 = new Array("Markus","Ralf","Günter","Horst");
a_Lebenslauf_0["mc_name"] = "a_Lebenslauf_0";

a_Lebenslauf_1 = new Array("Markus","Ralf","Horst","Günter","leo");
a_Lebenslauf_1["mc_name"] = "a_Lebenslauf_1";

a_Lebenslauf_2 = new Array("Horst","Markus","Ralf","Günter","leo","Isa");
a_Lebenslauf_2["mc_name"] = "a_Lebenslauf_2";

a_Lebenslauf_3 = new Array("Markus","Ralf","Günter");
a_Lebenslauf_3["mc_name"] = "a_Lebenslauf_3";
    
    
    
for (
f=0f<4f++) {
//dername = _root['soll'+g];
dername _root['a_Lebenslauf_'+f];
res dername.simpleSearch(Isa);
trace(res["mc_name"]);


Geändert von flatripe (17-02-2008 um 10:09 Uhr)
flatripe ist offline   Mit Zitat antworten
Alt 17-02-2008, 10:07   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
ActionScript:
  1. res = dername.search(Isa);
sollte das nicht
ActionScript:
  1. res = dername.search("Isa");
heissen?

Ich würde mir aber anständige Bezeichner angewöhnen.
Omega Psi ist offline   Mit Zitat antworten
Alt 17-02-2008, 10:08   #12 (permalink)
mushroom powered
 
Benutzerbild von b.asile
 
Registriert seit: Jun 2005
Ort: Amsterdam
Beiträge: 2.649
Ausserdem muesstest du bei der Variante auch ein this zurueckgeben (im Array Proto)...
__________________
[ WHEN THE GOING GETS WEIRD THE WEIRD TURN PRO ]

devboy.org
b.asile ist offline   Mit Zitat antworten
Alt 17-02-2008, 10:12   #13 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
ja
res = dername.search("Isa");
hab ich auch probiert - aber ist auch ein undefined
flatripe ist offline   Mit Zitat antworten
Alt 17-02-2008, 10:18   #14 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
ALso dieses konstrukt gibt leider auch ein undefinesd zurück, ihc check des einfach net ab - das gibts ja net

PHP-Code:
function simpleSearch(array:Array, string:String):Boolean {

var 
ret Boolean false

for (var 
i:Number 0i<array.lengthi++) {

 if (array[
i] == string) {
            
ret true;
            break;
          }
        }
        return 
ret;
      } 
    

    
//hier die einzelnen arrays die durchsucht werden sollen
a_Lebenslauf_0 = new Array("Markus","Ralf","Günter","Horst");
a_Lebenslauf_0["mc_name"] = "a_Lebenslauf_0";

a_Lebenslauf_1 = new Array("Markus","Ralf","Horst","Günter","leo");
a_Lebenslauf_1["mc_name"] = "a_Lebenslauf_1";

a_Lebenslauf_2 = new Array("Horst","Markus","Ralf","Günter","leo","Isa");
a_Lebenslauf_2["mc_name"] = "a_Lebenslauf_2";

a_Lebenslauf_3 = new Array("Markus","Ralf","Günter");
a_Lebenslauf_3["mc_name"] = "a_Lebenslauf_3";
    

    
for (
f=0f<4f++) {

dername _root['a_Lebenslauf_'+f];
res dername.simpleSearch("Isa");
trace(res["mc_name"]);

flatripe ist offline   Mit Zitat antworten
Alt 17-02-2008, 10:39   #15 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Wieso ist denn das break in der for-Schleife?
ActionScript:
  1. var array:Array = new Array("Fritz", "Klaus", "Peter");
  2. function simpleSearch(array:Array, string:String) {
  3.     for (var i:Number = 0; i<array.length; i++) {
  4.         if (array[i] == string) {
  5.             return true;
  6.         }
  7.     }
  8.     return false;
  9. }
  10. trace(simpleSearch(array, "Isa"));
  11. trace(simpleSearch(array, "Peter"));
Das haut hin. Ich würde auch auf sowas die assoziative Arrays verzichten und nur mit indizierten arbeiten:
ActionScript:
  1. var array1:Array = new Array("Fritz", "Klaus", "Peter");
  2. var array2:Array = new Array("Fritz", "Klaus", "Isa");
  3. var arrays:Array = new Array(array1, array2);
  4. function simpleSearch(array:Array, string:String) {
  5.     for (var i:Number = 0; i<array.length; i++) {
  6.         if (array[i] == string) {
  7.             return true;
  8.         }
  9.     }
  10.     return false;
  11. }
  12. function arraySearch(array:Array, string:String):Array {
  13.     var arr:Array = new Array();
  14.     for (var i:Number = 0; i<array.length; i++) {
  15.         if (simpleSearch(array[i], string)) {
  16.             arr.push(array[i]);
  17.         }
  18.     }
  19.     return arr;
  20. }
  21. trace("trace 1: "+simpleSearch(array1, "Isa"));
  22. trace("trace 2: "+simpleSearch(array2, "Isa"));
  23. trace("trace 3: "+arraySearch(arrays, "Isa").length);
Omega Psi 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 06:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele