2 dimensionaler Array + sort!
Labtec
- javascript
Hi!
Ich möchte einen Array der Größe nach sortieren. Gleichzeitig soll dem jeweiligen Wert des Arrays eine Url zugeordnet werden, damit ich die dazugehörige Seite für den kleinsten Wert in einem neuen Fenster öffnen kann. Ich hab das folgendermaßen zu lösen versucht:
function Numsort(a,b)
{ return a-b; }
function berechnen ()
{
var wert = new Array ();
wert[0] = new Array (10, "test.htm");
wert[1] = new Array (2, "test2.htm");
wert[2] = new Array (50, "test3.htm");
wert.sort(Numsort);
fensterneu = window.open(wert[0][1], "fenster", "width=300,height=500,left=80,top=40");
}
Leider gibt mir der IE die Fehlermeldung "Zahl erwartet" Mozilla hingegen führt offenbar die Sort Funktion gar nicht aus und öffnet test.htm! Meine Frage nun, was mach ich falsch bzw. wie könnte ich das Problem besser lösen??
Danke im voraus!
Lg Labtec
gruss Labtec,
Hi!
Ich möchte einen Array der Größe nach sortieren. Gleichzeitig soll
dem jeweiligen Wert des Arrays eine Url zugeordnet werden, damit
ich die dazugehörige Seite für den kleinsten Wert in einem neuen
Fenster öffnen kann.
...
wenn man der Array-methode "sort" eine selbstdefinierte
sortier-funktion mit auf den weg gibt, sollte diese den
aufbau des zu sortierenden arrays beruecksichtigen;
"sort" bedient sich waehrend eines einzelnen sortierschrittes
der vorgegebenen sortierfunktion, indem es diese mit genau zwei
eintraegen des zu sortierenden arrays aufruft und dabei auf einen
rueckgabewert groesser oder kleiner oder gleich 0 wartet, um auf
der basis dieses ergebnisses die beiden eintraege gewichten zu
koennen;
da Du nun arrays innerhalb eines arrays sortierst, und die
sortierung abhaengig vom ersten eintrag aller zu sortierenden
arrays ist, und dieser erste wert numerisch ist, sieht Deine
sortierfunktion folgendermassen aus:
function urlSort(a,b) { // oder jeder x-beliebige andere name;
return (a[0] - b[0]);
}
und wird auf Dein array "wert" angewandt so aufgerufen:
wert.sort(urlSort);
viel spass und by(t)e by(t)e - peterS. - pseliger@gmx.net
hallo again Labtec,
das ganze liesse sich auch noch mal
so richtig schoen kuerzen und saehe
dann so aus:
function berechnen() {
var wert = [
[10,"test.htm"],
[2,"test2.htm"],
[50,"test3.htm"]
];
wert.sort(function(a,b){return(a[0]-b[0]);});
fensterneu = window.open(wert[0][1], "fenster", "width=300,height=500,left=80,top=40");
}
tschoe - peterS. - pseliger@gmx.net