Steve_M: [ --- Sortieren Assoziative Arrays? --- ]

Hi,

wie kann ich in Javascript den Value einer Assoziative Array alphabetisch sortieren?

liste_guppen_daten = new Array();
liste_guppen_daten["32"] = "Kalender";
liste_guppen_daten["33"] = "Beispiele";
liste_guppen_daten["21"] = "Werkzeuge";
liste_guppen_daten["70"] = "Computerartikel";
liste_guppen_daten["7"] = "Taschen, Koffer, Rucksäcke";

Gruß St_

  1. Moin!

    Hi,

    wie kann ich in Javascript den Value einer Assoziative Array alphabetisch sortieren?

    Es gibt in Javascript keine assoziativen Arrays. Arrays haben immer numerische Indices.

    Assoziative "Dinger" sind tatsächlich Objekte, denen man beliebige Eigenschaften zuweist.

    Außerdem wird bei deiner Frage nicht deutlich, was du sortiert haben willst. Die Inhalte des Objekts, oder die Schlüsselwerte.

    liste_guppen_daten = new Array();

    Das ist falsch, es muß heißen:
    liste_guppen_daten = new Object();

    Siehe dazu auch den Abschnitt in SELFHTML: http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays

    liste_guppen_daten["32"] = "Kalender";
    liste_guppen_daten["33"] = "Beispiele";
    liste_guppen_daten["21"] = "Werkzeuge";
    liste_guppen_daten["70"] = "Computerartikel";
    liste_guppen_daten["7"] = "Taschen, Koffer, Rucksäcke";

    Dass die Schlüsselwerte Strings sind, aber aus Zahlen bestehen, verstärkt die Unklarheiten noch.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
  2. Hallo,
    Ich weiß auch nicht, ob ich dich richtig verstanden habe, aber probiers mal so (zumindst sind die Sachen dann nach Beispiele, Computerartikel ... sortiert):

    var liste_guppen_daten = new Array();
    liste_guppen_daten.push(new Array(32,"Kalender"));
    liste_guppen_daten.push(new Array(33,"Beispiele"));
    liste_guppen_daten.push(new Array(21,"Werkzeuge"));
    liste_guppen_daten.push(new Array(70,"Computerartikel"));
    liste_guppen_daten.push(new Array(7,"Taschen, Koffer, Rucksäcke"));
    liste_guppen_daten.sort(Numsort1);
      for (var j=0;j<liste_guppen_daten.length;j++) {
        alert(liste_guppen_daten[j][0] + " : " + liste_guppen_daten[j][1]);
      }

    }

    function Numsort1 (a, b) {
      if (a[1]<b[1]) return -1;
      if (a[1]>b[1]) return 1;
      return 0;
    }

    Grüße
    Ruth