in_array in Javascript

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • in_array in Javascript

    Hi @all,

    muss mich ein wenig mit JS beschäftigen und hab eine Frage zu Arrays. Hab hier im Forum und auf SelfHTML > Javascript einiges durchgeschaut und bin noch zu keiner Lösung gekommen.

    Ich suche eine Möglichkeit einen Wert in einem einfachen Array zu finden, bzw zu überprüfen ob der Wert enthalten ist.

    var Zahlen = new Array(1, 2, 4, 8, 16, 32, 64, 128, 256);

    if (in_array(4,Zahlen))

    vom prinzip her sowas. Gibts da eine Funktion?

    Danke.
    cya CrazyPip

  • #2
    Nein, du musst dir eine Funktion schreiben oder mal hier im Board suchen, da müsste es einen Thread mit einem solchen Codeschnipsel geben.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      ah ok

      denke damit sollte es gehen

      danke
      cya CrazyPip

      Kommentar


      • #4
        was würdest du denn machen, wenn du die fertige lösung nicht gefunden hätest?

        Das sind doch die Grundlagen, die man lerenen muss, bevor man mit Jeson Notation angefangen hat.
        PHP-Code:
        function in_array(wertchen,arraychen){
        for(
        i=0;i<arraychen.length;i++){
         if(
        arraychen[i]==wertchen) return true;//chen
         
        }
         return 
        false;//chen
        }

        if(
        in_array(3,new Array(1,2,3,4)))alert("ja");
        else 
        alert("nein chen"); 
        Slava
        bituniverse.com

        Kommentar


        • #5
          hi
          ja die grundlagen hab ich schon drauf - ich wollte aber wissen ob es da eine funktion gibt wie in_array.

          Da ich eine schnelle lösung suche ist eine funktion, die durch eine Schleife alle Keys durchsucht eigentlich nicht das was ich suche, da in das Array einiges an Werten reinkommt und somit es von mal zu mal länger dauert. Das Skript wird pro sekunde oder pro 2 sekunden - je nachdem was man halt einstellt 1mal ausgeführt wobei jedes mal ein neuer Wert eingetragen wird. Muss die Lösung für mein Problem daher anders erreichen.

          Ich hab den Link gepostet, damit andere die das gleiche suchen, eine lösung für ihr problem haben.

          gruss CrazyPip

          Kommentar


          • #6
            Original geschrieben von CrazyPip
            hi
            Da ich eine schnelle lösung suche ist eine funktion, die durch eine Schleife alle Keys durchsucht eigentlich nicht das was ich suche

            jetzt willst du mit noch klar machen, dass die von dir angenommene lösung schneller als meine ist?
            jetzt willst du mir noch erzehlen, dass deine funktion nicht alle Keys in einer schleife durchsucht?

            einzige unterschied ist, dass deine funktion(sorry seine funktion) noch zusätzlich alle keys von gefundenen werten liefert, wenn das gewünscht ist, dann spricht natürlich nichts gegen dieser function.

            nun weis ich aus der erfahrung, dass ich besser so eine function in 2 minuten programmiere, als 1 Stunde die passende funktion im Internet suche.
            Slava
            bituniverse.com

            Kommentar


            • #7
              hm ich kann mir nur schwer vorstellen, dass du weisst, was ich vorhabe, bzw was für ein Skript ich schreiben möchte. Deswegen nehme ich deinen etwas ironischen Beitrag nicht wirklich ernst...

              ich erstelle skripte die einen bestimmten zweck erfüllen. Die Methoden (ja! - es gibt verschiedene) wähle ich dabei je nach Vorteil - oder eben Nachteil.

              Und wenn ich denke, dass eine Funktion wie deine - oder auch andere die ähnlich funktionieren - ungeeignet sind (für mein Vorhaben), dann suche ich andere Methoden, um das zu erreichen was ich möchte.

              Nichts gegen deine Funktion an sich - die ist echt wunderschön.

              Kommentar


              • #8
                ne ernst!
                welche möglichkeiten gibt es eigentlich um ein wert im array zu finden?
                1)
                in einer schleife alles durchlaufen

                auch function in_array die in php geschrieben ist macht das selbe nur ein wenig schneller, weil sie nativ gescrieben ist.

                2)
                wenn alle werte im array sortiert sind
                kann man ein anderen suchmechanismus schreiben, der bei grossen sortierten Arrays schneller funktioniert.

                Prinzip:
                wir springen in die mitte von array und vergleichen der wert mit dem gesuchtem.
                wenn der wert kleiner als gesuchter ist, dann springen wir in 3/4 von arraylänge, in anderem fall in 2/4
                und so weiter bis der wert gefunden wird

                beispiel
                PHP-Code:
                var test=0;//für testzwecke um die anzahl von versuchen zu zählen.

                function in_sortedarray(wert,sarray){
                var 
                laenge=sarray.length;
                var 
                start=0;
                var 
                end=laenge-1;
                var 
                aktpos;//
                while(end-start!=0){
                test++; //versuch-zäller
                 
                aktposMath.floor((start+end)/2);
                 if(
                sarray[aktpos]==wert)return aktpos;
                 if(
                sarray[aktpos]>wert){end=aktpos; }
                 else{
                start=aktpos;}
                 if(
                end-start==1){
                  if(
                sarray[end]==wert)return end;
                  if(
                sarray[start]==wert)return start;
                  return 
                false;
                 }
                }
                }
                var 
                =new Array();//sotrirter Array erzeugen
                for(i=0;i<=1000;i++){
                 
                a[i]=i*2;
                }
                alert(in_sortedarray(780,a));//index von gefundenem wert ausgeben
                alert("in "+test+" versuchen erreicht worden");//versuchszäller 
                Slava
                bituniverse.com

                Kommentar


                • #9
                  ich stimme dir zu, dass es keine andere Möglichkeit gibt einen Wert im Array zu finden. Aber es gibt meiner Meinung nach andere Möglichkeiten um zu überprüfen ob ein Wert enhalten ist oder nicht.

                  bsp.
                  PHP-Code:
                  function start()
                  {
                      var 
                  cur Math.round((Math.random())*44); // die 44 hier nur als Beispiel. kann auch 547 o.Ä sein
                          
                          
                  if (cur <= 0)
                          {
                              
                  start();    
                          }
                          else if (
                  tmpv[cur] == 1)
                          {
                              
                  start();
                          }
                          else
                          {
                              
                  tmpv[cur] = 1;

                              
                  setTimeout('set_content('+cur+');'500); 
                          }

                  Mein Ziel ist es das setTimeout nur zu beginnen, wenn der tmpv[cur] nicht in tmpv enthalten ist. Hier kommt es mir auf den Wert also nicht wirklich an. Hier wird nur überprüft ob ein bestimmter Schlüssel einen Wert hat. Den könnte man sich dann auch ausgeben lassen (wenn er was anderes wie 1 wäre). Wie gesagt, dieses Skript wird bei mir ne nach setTimeout zeitbestimmung kontinuierlich ausgeführt, sodass die Lösung meiner Meinung nach schneller sein müsste.
                  Ich denke es kommt darauf an, wie ein Skript aufgebaut ist, sodass man Alternativen finden kann. Und bei kleinen Arrays denke ich auch, dass deine Funktion ihren Zweck erfüllt.

                  Kommentar


                  • #10
                    <<Mein Ziel ist es das setTimeout nur zu beginnen, wenn der tmpv[cur] nicht in tmpv enthalten ist.>>

                    dann brauchst du keine function überhaupt.
                    das heist

                    if(!tmpv[cur]){// mach was du willst }
                    diese Lösung ist aber ziemlich weit von deiner Fragestellung entfehrnt.
                    Ist aber egal!
                    hauptsache du kommst weiter.

                    Schöne Feiertage!!!

                    Slava
                    bituniverse.com

                    Kommentar


                    • #11
                      hm ja die fragestellung "gibt es eine Funktion ... " am Anfang hat sich aus dem Ansatz ergeben.

                      du hast weiter darauf rumgehackt

                      Schöne Feiertage!!!
                      vielen dank. Wünsch ich dir auch

                      Kommentar

                      Lädt...
                      X