zusätzlich ist mir noch beim testen mit vielen hausnummern aufgefallen, dass bei gleichen hausnummern mit unterschiedlichen zusätzen diese durcheinander sortiert werden, z.b. 12f, 12c, 12a, usw.
hat jemand ne idee?
Das wird ein bisschen komplizierter:
var str = new Array("12@2424523","3@423234","12a@2366","32a@2363","124@64576");
function hnrSort(a,b) {
var a1 = frmHnr(a);
var b1 = frmHnr(b);
return a1[0] > b1[0] ? 1 :
a1[0] < b1[0] ? -1 :
a1[1] > b1[1] ? 1 :
a1[1] < b1[1] ? -1 :
0;
}
function frmHnr(nr) {
var parts = nr.split('@');
var x = (parts[0].match(/[a-zA-Z]/g) != null)
?
parts[0].substring(parts[0].length - 1)
:
''
;
return [parseInt(parts[0]), x];
}
alert(str.sort(hnrSort).join('\n'));
Das geht vermutlich auch performanter, aber ich bin heute zu Faul zum Denken ;-)
Struppi.