Der folgende Beitrag wurde am 28. 06. 2006, 10:00 Uhr von Bernhard Wagner veröffentlicht.
Hallo,
habe eine Datenbank (1936 Datensätze) in ein zweidimensionales Array übertragen,sieht so aus:
z[1]= new Array(5);
z[1][0]= "Achsnich"
z[1][1]= "Agnes"
z[1][2]= ""
z[1][3]= "Bahnhofstr."
z[1][4]= "206"
nun möchte ich das Array nach den Hausnummern sortieren (z[1][4]). Mit "sort()" läßt sich nur das ganze Array sortieren. Hat jemand eine Idee?
Gruß Bernhard
Der folgende Beitrag wurde am 28. 06. 2006, 10:11 Uhr von Jörg Peschke veröffentlicht.
Moin,
> Mit "sort()" läßt sich nur das ganze Array sortieren.
Nope. Sort ohne Parameter sortiert nur das ganze Array.
Du kannst aber selber eine Sortier-Funktion als Parameter angeben,
die dann das Array so sortiert, wie Du willst.
Siehe http://de.selfhtml.org/javascript/objekte/array.htm#sort.
Grüße,
Jörg
Der folgende Beitrag wurde am 28. 06. 2006, 10:16 Uhr von JürgenB veröffentlicht.
Hallo Jörg,
> Nope. Sort ohne Parameter sortiert nur das ganze Array.
> Du kannst aber selber eine Sortier-Funktion als Parameter angeben,
> die dann das Array so sortiert, wie Du willst.
keine Sortier-, sonder eine Vergleichsfunktion.
@Bernhard: Ein Beispiel findest du hier: http://www.j-berkemeier.de/TableSort.html
Gruß, Jürgen
Der folgende Beitrag wurde am 28. 06. 2006, 12:07 Uhr von Bernhard Wagner veröffentlicht.
Hallo Jürgen,
danke für Deine Antwort. Den Link schau ich mir noch mal genauer an.
Gruß Bernhard
Der folgende Beitrag wurde am 28. 06. 2006, 12:05 Uhr von Bernhard Wagner veröffentlicht.
> Moin,
> > Mit "sort()" läßt sich nur das ganze Array sortieren.
>
> Nope. Sort ohne Parameter sortiert nur das ganze Array.
> Du kannst aber selber eine Sortier-Funktion als Parameter angeben,
> die dann das Array so sortiert, wie Du willst.
>
> Siehe http://de.selfhtml.org/javascript/objekte/array.htm#sort.
>
>
> Grüße,
> Jörg
Hallo Jörg,
danke für die Antwort, den Link kenne ich aber da wird nur Bezug auf eindimensionale Array´s genommen, das hilft mir leider nicht wirklich.
Gruß Bernhard
Der folgende Beitrag wurde am 28. 06. 2006, 12:36 Uhr von wahsaga veröffentlicht.
hi,
> den Link kenne ich aber da wird nur Bezug auf eindimensionale Array´s genommen, das hilft mir leider nicht wirklich.
Doch, täte es, wenn du ein wenig darüber nachdenkst.
Den _Vergleich_ anhand einer Eigenschaft "in der zweiten Dimension" zu machen, wäre ja Aufgabe deiner Vergleichsfunktion.
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Der folgende Beitrag wurde am 28. 06. 2006, 18:54 Uhr von Bernhard Wagner veröffentlicht.
Hallo wahsaga,
ich danke dir, du bist eine große Hilfe. Dein Genius leuchtet über dem ganzen Forum. Aber keine Angst, ich habe das Problem inzwischen selbst gelöst, auf sehr unkonventionelle Art.
Gruß Bernhard
Der folgende Beitrag wurde am 29. 06. 2006, 12:08 Uhr von Struppi veröffentlicht.
> ich danke dir, du bist eine große Hilfe. Dein Genius leuchtet über dem ganzen Forum. Aber keine Angst, ich habe das Problem inzwischen selbst gelöst, auf sehr unkonventionelle Art.
Wieso?
Deine einzige gedankliche Transferleistung wäre es gewesen, zu sehen, dass bei:
function mySort(a, b) { ... }
jeweils das zu vergleichende Element aus deiner Liste übergeben wird.
Also ist das einzige was du tun musst, in deiner Sortierfunktion auf das von dir gewünschte Elemten zu zugreifen
<script type="text/javascript">
function mySort(a, b)
{
return a[4] > b[4] ? 1 :
a[4] < b[4] ? -1 :
0;
}
var z = [
["Achsnich", "Agnes", "", "Bahnhofstr.", "214"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "206"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "204"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "201"]
];
var new_arr = z.sort(mySort);
alert(new_arr.join('\n'));
</script>
Einfach, oder?
Struppi.
--
Javascript ist toll (Perl auch!)
Der folgende Beitrag wurde am 29. 06. 2006, 12:19 Uhr von Siechfred veröffentlicht.
Hell-O!
> function mySort(a, b)
> {
> return a[4] > b[4] ? 1 :
> a[4] < b[4] ? -1 :
> 0;
> }
Das könnte schief gehen:
http://forum.de.selfhtml.org/archiv/2005/1/t98643/#m601461
Siechfred
--
Hier könnte Ihre Werbung stehen.
[remote-signature:http://www.anaboe.net/remsig.php]
Der folgende Beitrag wurde am 29. 06. 2006, 12:39 Uhr von Struppi veröffentlicht.
> > function mySort(a, b)
> > {
> > return a[4] > b[4] ? 1 :
> > a[4] < b[4] ? -1 :
> > 0;
> > }
>
> Das könnte schief gehen:
> http://forum.de.selfhtml.org/archiv/2005/1/t98643/#m601461
Wieso?
In dem von dir genanntenThread, wird mit a - b sortiert, genau das tu ich ja hier nicht.
Struppi.
--
Javascript ist toll (Perl auch!)
Der folgende Beitrag wurde am 29. 06. 2006, 13:11 Uhr von Siechfred veröffentlicht.
> > Das könnte schief gehen:
> > http://forum.de.selfhtml.org/archiv/2005/1/t98643/#m601461
> Wieso?
Heißa, vergaloppiert :-)
Siechfred
--
Hier könnte Ihre Werbung stehen.
Viel Lärm um nichts || Steuerliche Einordnung des Rangrücktritts
Der folgende Beitrag wurde am 29. 06. 2006, 22:11 Uhr von Bernhard Wagner veröffentlicht.
Hallo Struppi,
herzlichen Dank für Deine Antwort, aber entweder verstehe ich dabei was nicht oder es ist doch nicht ganz so einfach. Dein Beispiel bezieht sich doch wieder nur auf ein eindimensionales Array oder ich seh den Wald vor Bäumen nicht. Ich muß es mir noch mal langsam durch den Kopf gehen lassen. Meine Lösung ist komplizierter, kommt aber auch zum Ziel, der Haken bei der Sache ist, daß das zu sortierende Feld nicht nur Zahlen als Hausnummern enthält, sondern z.B. auch 106b; jedenfalls trotzdem noch mal Danke.
Gruß Bernhard
Der folgende Beitrag wurde am 30. 06. 2006, 10:10 Uhr von Struppi veröffentlicht.
> herzlichen Dank für Deine Antwort, aber entweder verstehe ich dabei was nicht oder es ist doch nicht ganz so einfach. Dein Beispiel bezieht sich doch wieder nur auf ein eindimensionales Array oder ich seh den Wald vor Bäumen nicht. Ich muß es mir noch mal langsam durch den Kopf gehen lassen. Meine Lösung ist komplizierter, kommt aber auch zum Ziel, der Haken bei der Sache ist, daß das zu sortierende Feld nicht nur Zahlen als Hausnummern enthält, sondern z.B. auch 106b; jedenfalls trotzdem noch mal Danke.
Nein das Beispiel ist ein Mehrdimensonales Array. Dir ist diese Schreibweise vermutlich nicht bekannt:
var x = [];
entspricht
var x = new Array();
und dementsprechend erzeugt das:
var x = [
[.....],
[.....],
[.....],
[.....]
];
ein zweidimensonales Array.
Das das Feld Zahlen und Buchstaben enthält ist mit meimem Beispiel kein Problem, da die Vergleiche > und < auch mit Strings funktionieren. Also soweit ich das getestet hatte sortiert JS das Array schön nach der Hausnummer.
Struppi.
--
Javascript ist toll (Perl auch!)
Der folgende Beitrag wurde am 30. 06. 2006, 11:06 Uhr von Bernhard Wagner veröffentlicht.
Hallo Struppi,
das habe ich jetzt verstanden. Die Schreibweise kannte ich wirklich nicht. Ich bin ein sehr versierter Javascript-Programmierer, das bedeutet, ich habe nicht wirklich viel Ahnung und muß mir die Sachen zusammenstoppeln, also noch mal ein ganz dickes Dankeschön, das hat wirklich geholfen.
Gruß Bernhard
Der folgende Beitrag wurde am 30. 06. 2006, 11:42 Uhr von Bernhard Wagner veröffentlicht.
Hallo Struppi,
ich hab´s gleich mal ausprobiert, es klappte hervorragend, für künftige Sachen weiß ich jetzt mehr. Allerdings mußte ich für mein spezielles Problem meine komplizierte Variante nehmen, da das Feld wegen der enthaltenen Buchstaben als String sortiert wurde, also nach der 1 die 10.
Gruß Bernhard
Der folgende Beitrag wurde am 30. 06. 2006, 11:52 Uhr von Struppi veröffentlicht.
> ich hab´s gleich mal ausprobiert, es klappte hervorragend, für künftige Sachen weiß ich jetzt mehr. Allerdings mußte ich für mein spezielles Problem meine komplizierte Variante nehmen, da das Feld wegen der enthaltenen Buchstaben als String sortiert wurde, also nach der 1 die 10.
Naja, selbst das wäre lösbar. Der Punkt war ja, dass du sowohl Zahlen als auch Buchstaben hast. du musst die Sortierfunktiopn nur entsprechend Anspassen:
<script type="text/javascript">
function mySort(a, b)
{
var tmp1 = parseInt( a[4] );
var tmp2 = parseInt( b[4] );
return tmp1 > tmp2 ? 1 :
tmp1 < tmp2 ? -1 :
a[4] > b[4] ? 1 :
a[4] < b[4] ? -1 :
0;
}
var z = [
["Achsnich", "Agnes", "", "Bahnhofstr.", "1"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "10"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "2c"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "2"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "10c"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "2a"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "10b"],
["Achsnich", "Agnes", "", "Bahnhofstr.", "10a"]
];
var new_arr = z.sort(mySort);
alert(new_arr.join('\n'));
</script>
Struppi.
--
Javascript ist toll (Perl auch!)
Der folgende Beitrag wurde am 30. 06. 2006, 12:52 Uhr von Bernhard Wagner veröffentlicht.
Oh Struppi,
das waren 100 Punkte. Da wär ich nie drauf gekommen. Jetzt ist die Welt wieder in Ordnung.
Ein Superdankeschön
Bernhard
Der folgende Beitrag wurde am 28. 06. 2006, 11:33 Uhr von Siechfred veröffentlicht.
Hell-O!
> habe eine Datenbank (1936 Datensätze) in ein zweidimensionales Array übertragen [...] nun möchte ich das Array nach den Hausnummern sortieren (z[1][4]). [...] Hat jemand eine Idee?
Schau dir mal mein Beispiel Sortieren von mehrdimensionalen Arrays an (eine Art Nachbau der Schwartzschen Transformation mittels Javascript).
Siechfred
--
Hier könnte Ihre Werbung stehen.
Viel Lärm um nichts || Die neue 1%-Regelung
Der folgende Beitrag wurde am 28. 06. 2006, 12:11 Uhr von Bernhard Wagner veröffentlicht.
Hallo Siechfred,
das könnte die Lösung meines Problems sein, ich werde mich, sobald ich Zeit habe, intensiv damit beschäftigen. Vielen Dank!!!
Gruß Bernhard
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4