URL: https://www.overclockers.at/coding-stuff/javascript_multiply_array_sort_88386/page_1 - zur Vollversion wechseln!
hab ein kleines problem und komm nimma weiter:
ich hab 4 arrays die alle in verbindung stehen (pos.0 der arrays gehören zusammen)
1.nachname
2.vorname
3.anrede
4.punkte
diese sollen nun per punkte sortiert werden...wenn ich aber nur das eine array sortiere, sortieren sich die anderen nicht mit. meine nächste lösung war: ich verbinde sie zu einem array...hab sie dann sortiert hat aber nicht funktioniert weil alles dann lexikalisch sortiert worden is
dann hab ich es mit dem trick:
function vergleich(a,b){
return a - b;
}
probiert aber das hat auch nicht funktioniert weil ich für diese function nur zahlen haben darf...
fällt euch noch was ein???
danke und lg
danke an alle...habs schu gelöst
lg
Deartiges Know-How ist hier gerne gesehen ;-)
Zitat von leondanke an alle...habs schu gelöst
lg
habe eine schleife geschrieben die es die alles sortiert :
Code:function sortPunkte(){ for(b=0;b<punkte.length-1;b++){ if(punkte[b]<punkte[b+1]){ z=punkte[b] punkte[b]=punkte[b+1] punkte[b+1]=z c=anrede[b] anrede[b]=anrede[b+1] anrede[b+1]=c d=nachname[b] nachname[b]=nachname[b+1] nachname[b+1]=d e=vorname[b] vorname[b]=vorname[b+1] vorname[b+1]=e } } for(a=0;a<nachname.length;a++){ eins.innerHTML+=punkte[a]+"<p>"; zwei.innerHTML+=nachname[a]+"<p>"; drei.innerHTML+=vorname[a]+"<p>"; vier.innerHTML+=anrede[a]+"<p>"; } }
irre ich mich, oder fehlt bei diesem bubblesort nicht noch eine weitere schleife ? nach einem durchlauf von sortPunkte() ist nur sichergestellt, daß das größte element ganz hinten steht, aber nicht, daß das kleinste ganz vorne steht.
sorry...die hab ich vergessen zu kopieren....natürlich is da noch eine zweite davor gewesen...
function sortPunkte(){
fuenf.innerHTML=" ";
eins.innerHTML=" ";
zwei.innerHTML=" ";
drei.innerHTML=" ";
vier.innerHTML=" ";
for(a=0;a<punkte.length;a++){
for(b=0;b<punkte.length-1;b++){
if(punkte[b]<punkte[b+1]){
z=punkte[b]
punkte[b]=punkte[b+1]
punkte[b+1]=z
c=anrede[b]
anrede[b]=anrede[b+1]
anrede[b+1]=c
d=nachname[b]
nachname[b]=nachname[b+1]
nachname[b+1]=d
e=vorname[b]
vorname[b]=vorname[b+1]
vorname[b+1]=e
}
}
}
for(a=0;a<nachname.length;a++){
eins.innerHTML+=punkte[a]+"<p>";
zwei.innerHTML+=nachname[a]+"<p>";
drei.innerHTML+=vorname[a]+"<p>";
vier.innerHTML+=anrede[a]+"<p>";
}
}
nochmals sorry wollte keinen verwirren
In so einem Fall ist es vielleicht nicht uninteressant objekte zu verwenden die die Information halten, ein normales Array das die Objekte aufnimmt und dann eine compare Function fuer das Array da die Browserinterne sortierung sicher effizienter ist:
Code:var obj; var daten = new Array; function Person(anrede, vorname, nachname, punkte) { this.anrede = anrede; this.vorname = vorname; this.nachname = nachname; this.punkte = punkte; this.toString = function() { return this.anrede + ' ' + this.vorname + ' ' + this.nachname + ': ' + this.punkte; } } function comparePunkte(a, b) { return a.punkte - b.punkte; } // objekte mit daten fuellen und ins array verpacken obj = new Person('Frau', 'Vorname', 'Nachname', 200); daten.push(obj); obj = new Person('Mann', 'Vorname', 'Nachname', 100); daten.push(obj); // .. alle daten ins array fuellen und array sortieren alert(daten); daten.sort(comparePunkte); alert(daten);
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025