Hallo,
Sortieren kannst du so einen Array mit einer eigenen Vergleichsfunktion:
arr.sort(function (a, b) {
if (a[1] < b[1])
return -1;
if (a[1] > b[1])
return 1;
return 0;
});
Sinniger wäre es, dass die Arrayelemente Objekte sind:
[ { id : "...", bezeichner : "..." }, ... ]
Dann kannst du statt a[0] a.id und statt a[1] a.bezeichner schreiben. Dementsprechend:
arr.sort(function (a, b) {
if (a.bezeichner < b.bezeichner)
return -1;
if (a.bezeichner > b.bezeichner)
return 1;
return 0;
});
Wenn du jetzt eine Binäre Suche über diesen Array mit Objects machen willst, schreibst du die Funktion entsprechend um. Der Zugriff auf das maßgebende Element verläuft nicht über this[index], sondern über this[index].bezeichner. Ist eigentlich simpel.
http://molily.de/temp/binaere-suche.html
Aber was hat das Ganze konkret mit AutoComplete zu tun? AutoComplete verstehe ich so, dass man einen Teil eines Begriffes eingibt und automatisch alle zuvor eingegebenen Begriffe angezeigt werden, die mit diesem Teil beginnen.
Was hast du eigentlich genau vor? Mir kommt dieses Konstrukt dermaßen umständlich vor, dass es sicher eine einfachere Lösung gibt. Was genau willst du? Willst du in den Array etwas einsortieren (warum?) oder einfach schauen, ob ein Wert drinsteht?
Willst du die ID zu einem Bezeichner extrahieren? Dann kannst du auch einfach ein Object nehmen, in der die Abbildung von Bezeichner auf ID gespeichert ist und du kannst dir die ganze Sortierung und Binäre Suche sparen.
Mathias