Heim >Web-Frontend >js-Tutorial >Wie sortiere ich ein JavaScript-Array basierend auf der Reihenfolge eines anderen Arrays?

Wie sortiere ich ein JavaScript-Array basierend auf der Reihenfolge eines anderen Arrays?

Barbara Streisand
Barbara StreisandOriginal
2024-12-19 18:49:10732Durchsuche

How to Sort a JavaScript Array Based on the Order of Another Array?

Sortieren eines JavaScript-Arrays basierend auf einem anderen Array

In JavaScript ist das Sortieren von Arrays ein häufiger Vorgang. Es gibt jedoch Szenarien, in denen Sie ein Array möglicherweise basierend auf einem anderen Array sortieren möchten. Dies kann eine Herausforderung sein, insbesondere wenn Sie keine eindeutigen Bezeichner zum Verknüpfen der Elemente haben.

Problemstellung:

Stellen Sie sich vor, Sie haben zwei Arrays:

  • itemsArray: Ein Array von Paaren [Name, Gruppenname], z.B.:

    [
        ['Anne', 'a'],
        ['Bob', 'b'],
        ['Henry', 'b'],
        ['Andrew', 'd'],
        ['Jason', 'c'],
        ['Thomas', 'b']
    ]
  • sortingArr: Ein sortiertes Array von Gruppennamen, z.B.:

    ['b', 'c', 'b', 'b', 'a', 'd']

The Die Aufgabe besteht darin, itemsArray neu anzuordnen, damit es der Anordnung von sortingArr entspricht. Das bedeutet, dass Elemente, die zur gleichen Gruppe gehören, nebeneinander liegen und in der Reihenfolge in sortingArr geordnet sein sollten.

Lösung:

Um dieses Problem zu lösen, können wir eine Sortierfunktion verwenden die Elemente basierend auf dem Index ihrer Gruppe in sortingArr vergleicht:

itemsArray.sort(function(a, b){  
  return sortingArr.indexOf(a) - sortingArr.indexOf(b);
});

Diese Funktion berechnet die Differenz zwischen den Indizes der Elemente in SortierArr. Eine positive Differenz gibt an, dass Element a nach Element b platziert werden sollte, während eine negative Differenz das Gegenteil anzeigt.

Einzeilige Lösung:

Alternativ können Sie schreiben Die Sortierfunktion verwendet die Pfeilsyntax, was zu einer prägnanteren Darstellung führt Lösung:

itemsArray.sort((a, b) => sortingArr.indexOf(a) - sortingArr.indexOf(b));

Ausgabe:

Nach dem Sortieren sieht das itemsArray folgendermaßen aus:

[
    ['Bob', 'b'],
    ['Jason', 'c'],
    ['Henry', 'b'],
    ['Thomas', 'b'],
    ['Anne', 'a'],
    ['Andrew', 'd'],
]

Wie Sie sehen können, ist das Elemente im itemsArray wurden neu angeordnet und sortiert, um der Reihenfolge im sortingArr zu entsprechen.

Das obige ist der detaillierte Inhalt vonWie sortiere ich ein JavaScript-Array basierend auf der Reihenfolge eines anderen Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn