Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] JS Array sortieren

Einklappen

Neue Werbung 2019

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

  • [Erledigt] JS Array sortieren

    Hey Leute,

    ich habe eine Aufgabe bekommen und komme einfach nicht zur Lösung.

    Ich habe hier ein Array mit zwei Werten pro Datensatz. Wie ich das nach dem zweiten Wert sortiere habe ich gerafft. Aber ich möchte nun das wenn im zweiten Wert bei verschiedenen Datensätze diese Alphabetisch sortiert werden. Wie zum teufel kriege ich das hin? Ich muss ja aus dem schon sortierten diese mit den doppelten Werten herrausfiltern und neu sortieren. Aber wie?

    Ich hoffe ihr könnt mir helfen.

    Hier der Script:

    Code:
                data = [
                    {name: 'ABC', popularity: 7},
                    {name: 'Z-024', popularity: 0},
                    {name: 'L-026', popularity: 1},
                    {name: 'N12', popularity: 0},
                    {name: 'N16', popularity: 3},
                    {name: 'A17', popularity: 3},
                    {name: 'OBK', popularity: 0},
                    {name: 'OCD', popularity: 4},
                ]
                data.sort(function(a, b) {
                    return(a.popularity - b.popularity)
                });
                
                for( var i=0; i < data.length; i++ ) {
                    document.write(data[i].name + ' - ' + data[i].popularity + '<br />');
                }
    Gruß

  • #2
    Zitat von oelgemeyer Beitrag anzeigen
    Aber ich möchte nun das wenn im zweiten Wert bei verschiedenen Datensätze diese Alphabetisch sortiert werden.
    Dieser Satz macht keinen Sinn...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Oh stimmt. Du siehst ja das in Popularity mehrfach 0 steht. Wenn ich nun das Array nach Popularity sortiere sind die die alle null oder einen anderen Wert haben unsortiert. Diese möchte ich alphabetisch sortieren. Weißt du wie ich das mache?

      Kommentar


      • #4
        Ich meinte "weißt du wie ich das meine."

        Kommentar


        • #5
          Code:
          data.sort(function(a, b) {
              if (a.popularity == b.popularity) {
                if (a.name < b.name) return -1;
                if (a.name > b.name) return 1;
                return 0;
              }
              return(a.popularity - b.popularity)
          });
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Okay. Vielen vielen Dank erstmal!
            Kannst du mir das evtl noch ein wenig erklären? Also die zweite Zeile versteh ich schonmal. Macht ja nur Sinn. Aber würde "return a.name - b.name;" nicht das gleiche machen? Bzw wieso tut es das nicht? Und wozu Return 0?

            Kommentar


            • #7
              Strings voneinander subtrahieren macht keinen Sinn.

              Die Vergleichsfunktion muss einen von drei Werten zurückliefern. 0 wenn beide Werte gleich sind, -1 wenn der erste Wert kleiner als der zweite ist, 1 wenn der erste Wert größer als der zweite ist.
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Okay. Ich hatte mich heute erst damit Beschäftigt und hatte es so verstanden das es so definiert ist wenn ich diese von einander abziehe werden die nicht abgezogen sondern verglichen. Aber okay. Gut danke schön!

                Kommentar

                Lädt...
                X