2d Array sortieren
Stefan Neumann
- javascript
Hi Alle,
ich versuche verzweifelt ein 2dimensionales Array zu sortieren. Mein Array besteht aus 50 Elementen, diese jeweils aus einem Array mit 4 Elementen.
Wie kann ich nun dieses Array nach dem 2. Wert (also
Array[i][1]) sortieren ??
Die normale Array.sort() funktion sortiert nach dem 1. Element (Array[i][0])
Vielleicht kann mir jemand weiter helfen !!
Stefan Neumann
Hi!
Wie kann ich nun dieses Array nach dem 2. Wert (also Array[i][1]) sortieren ??
Die normale Array.sort() funktion sortiert nach dem 1. Element (Array[i][0])
Wenn Du nicht selbst einen Sortieralgorithmus implementieren möchtest, dann lege ein
weiteres 2-dimensionales Array an, in dessen 0-tes Element (z. B. tmpArr[i][0}) Du die Werte einträgst,
nach denen Du DEIN Array sortieren willst. In das 1-tes Element (z. B. tmpArr[i][1]) schreibst Du den Index,
an welchem das Element in DEINEM Array liegt. Nun sortierst Du dieses Array (z. B. mit tmpArr.sort())
und hast, wenn Du dieses einmal durchläufst, die Reihenfolge, in welche Du die Elemente DEINES
Arrays umsortieren mußt.
Hab' ich mich deutlich genug ausgedrückt?!?
Enjoy IT,
Andreas
Hi,
Du kannst bei sort() eine Vergleichsfunktion als Parameter angeben und darüber beliebige Sortierreihenfolgen realisieren.
Siehe <../../tecc.htm#a11>
Wenn der Hinweis nicht reicht, melde Dich nochmal.
Gruß
Steffen
Auch Hi!
Siehe <../../tecc.htm#a11>
Imho etwas besser beschrieben auf http://developer.netscape.com/docs/manuals/js/client/jsref/array.htm#1196882.
So long
Hi,
Du kannst bei sort() eine Vergleichsfunktion als Parameter angeben und darüber beliebige Sortierreihenfolgen realisieren.
Siehe <../../tecc.htm#a11>
Wenn der Hinweis nicht reicht, melde Dich nochmal.
Gruß
Steffen
Vielen Dank,
ich kann dort leider nicht rauslesen, WIE ich diese Suchreihenfolgen realisieren kann.
Weißt du zufällig welcher Sortieralgorithmus mit der sort() function implementiert ist ??
mfg
Stefan Neumann
ich kann dort leider nicht rauslesen, WIE ich diese Suchreihenfolgen realisieren kann.
Stimmt. Ich habe mir den Text gerade nochmal genauer angesehen, da fehlen tatsächlich wichtige Aussagen. Wahrscheinlich habe ich die Methode in einem anderen Teil von SelfHTML gesehen.
Ich versuche mal, das Prinzip zu erklären: Alles, was ein Sortieralgorithmus braucht, um die richtige Reihenfolge herzustellen, ist eine Vergleichsfunktion, d.h. welches von zwei Elementen soll am Ende vor dem anderen stehen. I.d.R. muß diese Vergleichsfunktion nicht angegeben werden, da nach Größe (Zahlen) bzw. Alphabet (Strings) sortiert werden soll. Der gleiche Algorithmus kann aber auch z.B. Namen nach dem schönen Klang sortieren, dazu braucht er nur eine andere Vergleichsfunktion.
Für sort() brauchst Du eine Vergleichsfunktion, deren Ergebnis <0 oder >0 ist - je nachdem, ob das erste oder das zweite Argument weiter hinten in der Reihenfolge stehen soll (=0, falls egal). In Deinem Fall soll nach dem zweiten Index der Elemente sortiert werden, die Vergleichsfunktion müsste also etwa so aussehen:
function byIndex1(a,b)
{
if (a[1]<b[1]) return 1;
else if (b[1]<a[1]) return -1;
else return 0;
}
Und dann sortierst Du einfach mit
Array.sort(byIndex1)
Gruß
Steffen