Steffen: kann man arrays "durchsuchen"?

einen wunderschönen guten abend!

ist es eigentlich möglich einen array zu durchsuchen? denn ich würde gerne etwas folgender art probieren:

in einem array sind z.b. ländernamen gespeichet und über ein eingabefeld kann der besucher ein name eingeben. das script soll nun schauen, ob das eingebene im array vorhanden ist. falls ja, wäre eine weiterletung zu einer anderen seite möglich und falls nicht, eine alert-fenster.

vielen dank für eure hilfe schon einmal im vorraus!

mfg,
steffen

  1. hallo,

    »ist es eigentlich möglich einen array zu durchsuchen?

    Ja, natürlich. Siehe SELFHTML

    in einem array sind z.b. ländernamen gespeichet und über ein eingabefeld kann der besucher ein name eingeben. das script soll nun schauen, ob das eingebene im array vorhanden ist. falls ja, wäre eine weiterletung zu einer anderen seite möglich und falls nicht, eine alert-fenster.

    Wie das gehen kann, findest du natürlich auch im SELFHTML-Javascriptkapitel

    vielen dank für eure hilfe schon einmal im vorraus!

    Dein "vorraus" ist ein mir unbekannter geologischer Ort.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hallo Steffen,
    das sieht etwa so aus:
    var Ergebnis = Array.search(Suchbegriff);
    Gruß Bernhard

    1. hi,

      das sieht etwa so aus:
      var Ergebnis = Array.search(Suchbegriff);

      Echt - das Array-Objekt kennt eine Methode search?

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Ach wahsaga,
        Du bist so gut. Für Array muß natürlich das erstellte Array stehen. Also machen wir es z.B. so:

        var wahsaga = new Array();
        wahsaga[0] = "Supergenius";
        var Suchbegriff = "Super";
        var Ergebnis = wahsaga[0].search(Suchbegriff);
        alert(Ergebnis);

        1. hi,

          Ach wahsaga,
          Du bist so gut.

          Und du bist ein Depp [1].
          Ich habe wertfrei nachgefragt, weil mir nicht bekannt gewesen wäre, dass Array in Javascript eine Methode search besitzt.

          Für Array muß natürlich das erstellte Array stehen.

          Ach nee.
          Wenn das erstellte Array eine Methode search hätte (die nicht selbstdefiniert ist), dann hätte es diese Methode aber vom Array-Objekt von Javascript geerbt.

          Also machen wir es z.B. so:
          var wahsaga = new Array();
          wahsaga[0] = "Supergenius";
          var Suchbegriff = "Super";
          var Ergebnis = wahsaga[0].search(Suchbegriff);
          alert(Ergebnis);

          Damit widersprichst du deiner eigenen Aussage

          Für Array muß natürlich das erstellte Array stehen.

          • du hast jetzt nämlich nicht auf wahsaga, dein Array, eine Methode search angewandt, sondern auf wahsaga[0], also auf ein einzelnes Element in deinem Array.
            Das heißt, du hast jetzt lediglich die search-Methode des String-Objektes angewandt.

          Und dies hat leider mit dem, was der OP (höchstvermutlich) wollte - nämlich in einem Array nachschauen, ob ein Element mit einem bestimmten Wert existiert, analog zu z.B. in_array() in PHP - so ziemlich gar nichts zu tun. Das solltest sogar du einsehen können, wenn du von deinem "der wahsaga wollte mir schon wieder was Böses"-Trip mal wieder runterkommst, und stattdessen mal nachdenkst.

          gruß,
          wahsaga

          [1] Diese Meinungsäußerung bezieht sich auf deine Reaktion auf meine Frage, nicht darauf, dass du fachlich unrecht hast.

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Hallo wasaga,
            ich sehe schon, letzt werden wir noch gut miteinander auskommen. Ich habe nur so bissig reagiert, weil man bei Deinen Beiträgen immer das Gefühl hat, daß Du von oben herab auf alle Dummys guckst. Wenn ich das richtig gelesen habe, ist das Forum auch für nicht so in der Materie steckende Leute gedacht (wie z.B. mich) und da sind Deine Kommentare (ich habe auch bei anderen Nachgelesen) nicht wirklich hilfreich. Aber jetzt sehe ich, daß Du auch vernünftig erklären kannst, den "Depp" ignoriere ich einfach mal.

            <script language="JavaScript">
            var wert = new Array();
            wert[0] = "100";
            wert[1] = "210";
            wert[2] = "222";
            wert[3] = "258";
            var Suchbegriff = "222";
            for(x=0;x<5;x++){
            var Ergebnis = wert[x].search(Suchbegriff);
            if(Ergebnis != -1){
            alert("Der gesuchte Wert ist vorhanden");
            }}
            </script>

            Könnte es so gehen?
            Gruß Bernhard

            1. <script language="JavaScript">

              Das language Attribut solltest du dir einfach abgewöhnen, es seit Jahren "mißbilligt" und muss momentan durch type="text/javascipt" ersetzt werden.

              var wert = new Array();
              wert[0] = "100";
              wert[1] = "210";
              wert[2] = "222";
              wert[3] = "258";

              Nur nochmal als Vertiefung:

              var wert = [100, 210, 222, 258];

              var Suchbegriff = "222";
              for(x=0;x<5;x++){

              Das ist unflexibel und globale Schleifenvariabel ist ganz böse.

              for(var x = 0; x < wert.length ; x++)

              üblicherweise heißt die Schleifenvariabel i (von iteration oder so)

              var Ergebnis = wert[x].search(Suchbegriff);

              Warum du auf dem search so bestehst ist mir schleierhaft, du kannst ohne Probleme == verwenden.

                
              var wert = [100, 210, 222, 258];  
              var Suchbegriff = 222;  
              for(var i = 0; i < wert.length ; i++)  
              if( Suchbegriff == wert[i] ) alert('gefunden');  
              
              

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. Hallo Struppi.

                Warum du auf dem search so bestehst ist mir schleierhaft, du kannst ohne Probleme == verwenden.

                Hier ja, aber vermutlich möchte er auch mit Zeichenketten arbeiten, wo der Suchbegriff nicht alleinig enthalten ist.

                Einen schönen Freitag noch.

                Gruß, Ashura

                --
                sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                [HTML Design Constraints: Logical Markup]
                1. Hallo Ashura,

                  Warum du auf dem search so bestehst ist mir schleierhaft, du kannst ohne Probleme == verwenden.

                  Hier ja, aber vermutlich möchte er auch mit Zeichenketten arbeiten, wo der Suchbegriff nicht alleinig enthalten ist.

                  »»

                  Ja genau, das ging nicht anders als mit search. Ich habe ein Feld das Straßennamen enthält und da gibt es "Elb.-Str.", "Elbingerstr." und "Elbingerstraße" und die will ich mit dem Suchbegriff "Elb" alle haben.
                  Gruß Bernhard

                  1. Ja genau, das ging nicht anders als mit search. Ich habe ein Feld das Straßennamen enthält und da gibt es "Elb.-Str.", "Elbingerstr." und "Elbingerstraße" und die will ich mit dem Suchbegriff "Elb" alle haben.

                    Das geht dann widerrum auch mit indexOf()

                    Struppi.

                    --
                    Javascript ist toll (Perl auch!)
                    1. hallo,

                      danke für eure zahlreichen antworten, ich werde gleich alles ausprobieren!

                      mfg,
                      steffen

                    2. Das geht dann widerrum auch mit indexOf()

                      Das stimmt natürlich. Gibt es da von der Effektivität her einen Unterschied? oder ist es einfach gehopst wie gesprungen?

                      Bernhard

                      1. Das geht dann widerrum auch mit indexOf()

                        Das stimmt natürlich. Gibt es da von der Effektivität her einen Unterschied? oder ist es einfach gehopst wie gesprungen?

                        String operationen sind immer schneller, als Reguläre Ausdrücke.

                        Struppi.

                        --
                        Javascript ist toll (Perl auch!)
                        1. Hallo Struppi.

                          Das geht dann widerrum auch mit indexOf()

                          Das stimmt natürlich. Gibt es da von der Effektivität her einen Unterschied? oder ist es einfach gehopst wie gesprungen?

                          String operationen sind immer schneller, als Reguläre Ausdrücke.

                          Die search-Methode nimmt auch normale Strings entgegen, auch wenn dies nicht dokumentiert zu sein schein.

                          Einen schönen Samstag noch.

                          Gruß, Ashura

                          --
                          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                          [HTML Design Constraints: Logical Markup]
              2. Das language Attribut solltest du dir einfach abgewöhnen, es seit Jahren "mißbilligt" und muss momentan durch type="text/javascipt" ersetzt werden.

                Das language Attribut hat mir "Phase5" vorgegeben, da hab ich nicht drüber nachgedacht - danke für den Hinweiß.

                Warum du auf dem search so bestehst ist mir schleierhaft, du kannst ohne Probleme == verwenden.

                Das frag ich mich inzwischen auch.

                var wert = [100, 210, 222, 258];
                var Suchbegriff = 222;
                for(var i = 0; i < wert.length ; i++)
                if( Suchbegriff == wert[i] ) alert('gefunden');

                  
                Ja logisch.  
                Bernhard
                
            2. Hallo Bernhard.

              <script language="JavaScript">
              var wert = new Array();
              wert[0] = "100";
              wert[1] = "210";
              wert[2] = "222";
              wert[3] = "258";
              var Suchbegriff = "222";
              for(x=0;x<5;x++){
              var Ergebnis = wert[x].search(Suchbegriff);
              if(Ergebnis != -1){
              alert("Der gesuchte Wert ist vorhanden");
              }}
              </script>

              Könnte es so gehen?

              Nein, ganz gewiss nicht, da dein Array „wert“ lediglich vier Elemente hat, du aber ganze sechs Elemente (0 bis 5) durchläufst.

              Versuche es einmal hiermit:

              var wert = ['100', '210', '222', '258']; // Literalschreibweise, äquivalent zu new Array();  
              var Suchbegriff = '222';  
                
              for (var i = 0; i < wert.length; ++i) { // Dank lenght läuft die Schleife genau so oft durch, wie es Elemente im Array gibt  
                
                if (wert[i].search(Suchbegriff) != -1) { // Eine Zwischenspeicherung des Suchergebnisses ist nicht erforderlich  
                
                  alert('Der gesuchte Wert „' + Suchbegriff + '“ ist vorhanden.');  
                
                }  
                
              }
              

              Einen schönen Freitag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
              [HTML Design Constraints: Logical Markup]
              1. Einen schönen guten Nachmittag.

                for(x=0;x<5;x++){
                [...]
                }

                Nein, ganz gewiss nicht, da dein Array „wert“ lediglich vier Elemente hat, du aber ganze sechs Elemente (0 bis 5) durchläufst.

                Stimmt nicht ganz. Da der Vergleichsoperator "echt kleiner" ("<") verwendet wird, werden nur die Elemente 0 bis 4 (5 ist ja nicht "echt" kleiner als 5) durchlaufen. Jedoch kommt es da auch zu dem bereits genannten Problem, da wiederum nur die Elemente 0 bis 3 existieren. Macht im Endeffekt also keinen Unterschied, esseidenn man erweitert das Array.

                So long and thanks for all the fish,
                Oku

                --
                Lehrersprüche - Schülersprüche
                Herr Brüns: "Das Primitive ist nicht zu verachten, besonders wenn man keine Ahnung hat."
                1. Hallo Oku.

                  for(x=0;x<5;x++){
                  [...]
                  }

                  Nein, ganz gewiss nicht, da dein Array „wert“ lediglich vier Elemente hat, du aber ganze sechs Elemente (0 bis 5) durchläufst.

                  Stimmt nicht ganz. Da der Vergleichsoperator "echt kleiner" ("<") verwendet wird, werden nur die Elemente 0 bis 4 (5 ist ja nicht "echt" kleiner als 5) durchlaufen.

                  Ja, stimmt. Da hatte ich nicht genau hingeschaut.

                  Einen schönen Freitag noch.

                  Gruß, Ashura

                  --
                  sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                  „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                  [HTML Design Constraints: Logical Markup]
            3. hi,

              Ich habe nur so bissig reagiert, weil man bei Deinen Beiträgen immer das Gefühl hat, daß Du von oben herab auf alle Dummys guckst.

              Davon kann hier keine Rede sein - meine Nachfrage war ehrlichem Interesse geschuldet. Schließlich weiß ich auch nicht alles, und dass es eine search-Methode für Arrays in Javascript - möglicherweise auch erst ab einer bestimmten Version - gibt, war ja nicht auszuschließen.
              Da ich bisher jedoch keine solche kannte/kenne, sondern auch immer nur das "selber basteln" per Schleife, die das Array durchläuft und Wert für Wert vergleicht, interessierte mich also, ob mir da was entgangen sein könnte.

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. ist es eigentlich möglich einen array zu durchsuchen? denn ich würde gerne etwas folgender art probieren:

    in einem array sind z.b. ländernamen gespeichet und über ein eingabefeld kann der besucher ein name eingeben. das script soll nun schauen, ob das eingebene im array vorhanden ist. falls ja, wäre eine weiterletung zu einer anderen seite möglich und falls nicht, eine alert-fenster.

    Dazu würde ich nicht ein array, sondern ein Objekt benutzen.

      
    var laender = {  
    ghana: 'http://ghana.de',  
    lagos: 'http://lagos.de',  
    kongo: 'http://kongo.de'  
    };  
      
    var land = prompt('Gib ein Land ein:', 'ghana');  
    var url = laender[land.toLowerCase()];  
    if(url)  
    {  
       alert('Weiterleitung nach: ' + url);  
       //window.loaction.href = url;  
    }  
    else  
    {  
      alert('Es gibt keine URL für ' + land);  
    }  
      
    
    

    Struppi.

    --
    Javascript ist toll (Perl auch!)