Innanzi tutto grazie della risposta.
Purtroppo non ho guardato come si deve il tuo scritto (in fondo oggi è Festa ) e me lo studierò domani mattina.
Comunque, il nocciolo della questione è che uso questa routine
codice:
/*----------------------------------------------------------------
Trova il primo elemento della lista ordinata a il cui elemento
inizia per x: restituisce -1 se non trova corrispondenza
----------------------------------------------------------------*/
function FindLeft(a, x)
{
	var l = 0;
	var r = a.length;
	var w = 0; y = "", y1 = "", k = 0, k1 = 0;
	
	if(x == "") return -1;
	x = x.toLowerCase( )
	while(l <= r)
	{
		k = Math.floor((l + r) / 2)	;
		y = a[k].substr(0, x.length).toLowerCase();
		if(x <= y) r = k - 1;
		if(x >= y) l = k + 1;
		if(x == y) w = 1;
	}
	
	if(w != 0)
	{
		k1 = k;
		
		while (true)
		{
			k--;
			if(k < 0) break;
			y = a[k].substr(0, x.length).toLowerCase();
			y1 = a[k1].substr(0, x.length).toLowerCase();
			if(y != y1) break; else k1 = k;
		}	
		return k1;
	}
	else 
		return -1;
}
Il vettore ordinato è creato nel server e la ricerca è indipendente da maiuscolo-minuscolo. Anche so l'ho trasformata (non senza fatica) da Basic a js, credo che sia corretta. Naturalmente il vettore deve essere ordinato, altrimenti è chiaro che non funziona.
Ora, è chiaro che bisogna prima studiare la tua risposta e poi, semmai, continuare il discorso :master: Ciao