Javascript Array.sort()

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

  • Javascript Array.sort()

    Huhu,

    ich habe ein (wie immer ) kleines Problem.

    ich habe ein array in meinem Javascript, welches Kategorie Namen beinhaltet.
    Im Moment stehen nur 2 Werte drin (werden aber mehr)
    das Array wird aus einer XML Datei mit Werten gefüllt:

    Code:
    kategorie = [];
    
    ... schleifenbedingung beim auslesen der xml
    
    kategorie[markerdata[i].getAttribute("kategorie")]=markerdata[i].getAttribute("kategorie");
    
    ...
    im Moment stehen also die Werte:
    kategorie[Unterkunft]=Unterkunft;
    kategorie[Touristik]=Touristik;


    wenn ich nun versuche das Array zu sortieren, ignoriert er dies völlig.

    Code:
    for (x in kategorie){alert (x);};
    kategorie.sort();
    for (x in kategorie){alert (x);};
    er gibt Unterkunft vor Touristik aus.

    auszug aus selfhtml:

    sort()

    Sortiert die Elemente eines Arrays. Wenn Sie keinen Parameter übergeben, wird lexikalisch sortiert..

    was mache ich falsch?

  • #2
    Deine Debugnachricht is ja auch albern, du gibst dir da die Keys von dem Array aus und net die Werte... brauchst du das Array denn überhaupt assoziativ? Ansonsten würd ich die Werte einfach alle einzeln ins Array schmeißen, dann funzt sort() auch ordentlich

    btw ist das for in statement lediglich für Objekte gedacht, steht auch bei selfhtml ;-)
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      Original geschrieben von ArSeN
      Deine Debugnachricht is ja auch albern, du gibst dir da die Keys von dem Array aus und net die Werte... brauchst du das Array denn überhaupt assoziativ? Ansonsten würd ich die Werte einfach alle einzeln ins Array schmeißen, dann funzt sort() auch ordentlich

      btw ist das for in statement lediglich für Objekte gedacht, steht auch bei selfhtml ;-)
      albern ist mal niedlich...

      aus dem xml kommen 25 * kategorie und 30 mal touristik (beispiel. können auch mehr oder weniger sein) , davon merke ich mir halt nur 1* Kategorie und 1 * Touristik.
      Ind diesem Fall macht es also Sinn, die Keys zu nutzen.

      Aber eventuell formuliere ich die Frage extra für Dich nochmal um
      Ich möchte die KEYS in dem array sortieren........

      (btw albern ist das nicht, es zeigt in meinem Beispiel genau das was passiert, was ich nicht will und erklärt somit mein Problem)
      Ich könnte das array auch dahingehend umbauen das es so aussieht, evtl wirds dann deutlicher..

      kategorie[Unterkunft]=1;
      kategorie[Touristik]=1;
      Zuletzt geändert von ; 24.02.2009, 13:19.

      Kommentar


      • #4
        Ich sehe "niedlich" einfach mal als Kompliment

        Dann erkläre mir doch mal bitte, weswegen die die Informationen die du in deinem Array speichern möchtest in die Indizes packst, anstatt sie als Werte des Arrays anzugeben, so wie es sich gehört. Bin gespannt.
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar


        • #5
          weil ich dann ein array hätte, indem 25 mal das wort Unterkunft und 30 mal Touristik vorkommt

          ich lese XX datensätze aus einer DB mit PHP. Mache daraus ein schickes XML File..

          hier ein Beispiel mit nur wenigen einträgen
          http://www.online-ferienwelt.de/geod...php?m=1&gid=85

          es gibt in diesem beispiel ein paar datensätze mit der kategorie Unterkunft und ein paar mit der Kategorie Touristik.

          Die aufbereitung in ner karte siehst du hier:

          http://www.online-ferienwelt.de/feriengebiet/0

          am ende brauch ich die kategorien vorkommen (halt am besten sortiert)

          das beispiel hier ist recht klein, es wird aber darauf hinauslaufen, das ich eventuell 20 unterschiedliche kategorien habe in 500 datensätzen.

          anstatt sie als Werte des Arrays anzugeben, so wie es sich gehört
          find ich mal ganz schön pauschal

          Kommentar


          • #6
            weil ich dann ein array hätte, indem 25 mal das wort Unterkunft und 30 mal Touristik vorkommt
            Du willst also duplikate vermeiden, aha! Wie wärs dann, wenn du einfach vor dem Reinschreiben in das Array prüfst, ob der entsprechende Wert nicht vielleicht schon drinnesteht, und es dann lässt?

            find ich mal ganz schön pauschal
            Naja, grundsätzlich sind die Schlüssel ja wohl da, um auf die Werte zuzugreifen, deswegen heißen sie ja wohl auch schlüssel, oder irre ich mich da? Du nennst ja eine Variable auch nicht jedes mal um wenn was anderes drinne steht

            Sorry dass ich solang darauf rumreite, aber ich glaub es gibt keine (vorgegebene) Möglichkeit in JS nach dem Schlüssel zu sortieren. Du könntest dir natürlich aber mit soetwas hier aushelfen.
            Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

            Kommentar


            • #7
              nene, ich verstehe dich schon und finde es ja auch gut, das du so genau drauf eingehts

              aber die vorgehensweise soetwas in der Form zu machen wäre ja ein array mit schaltern, (wie in meinem Fall)

              kategorie[kategoriename]=schalterwert;

              ist in php ja auch durchaus machbar und nicht so unüblich wie in JS

              ich denke ich schreib mir die vorgehensweise wie du sie beschrieben hast.

              kategrorie[0]=kategoriename1;
              kategrorie[1]=kategoriename2;
              etc..
              prüfe dann ob schon da, wenn nich rein, wenn ja nix tun

              aber kann ich das denn dann nach den werten (kategoriename) sortieren ?

              ist halt hübscher

              Kommentar


              • #8
                Jop des hab ich vorhin auch ausprobiert als ich versucht hab dein Problem zu verstehen Funktioniert ohne Probleme - Die Indizes werden dabei getauscht, bleiben also fortlaufend 0 bis n ...
                Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                Kommentar


                • #9
                  dann vielen dank

                  Kommentar


                  • #10
                    Original geschrieben von Peacie
                    Ich möchte die KEYS in dem array sortieren........
                    Dann hast du ueberhaupt kein Array.

                    JavaScript kennt keine "assoziativen" Arrays.
                    Wann immer du etwas derartiges verwendest, verwendest du kein Array, sondern ein Objekt.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X