Sort() special characters

Status
Niet open voor verdere reacties.

h4nneke

Nieuwe gebruiker
Lid geworden
12 nov 2007
Berichten
3
Hallo, ik gebruik onderstaand script om een select te sorteren:

Code:
function sortList() 
{ 
	var lb = document.getElementById('landen'); 

	arrTexts = new Array(); 
	arrValues = new Array(); 
	arrOldTexts = new Array(); 

	for(i=0; i<lb.length; i++) 
	{ 
		arrTexts[i] = lb.options[i].text; 
		arrValues[i] = lb.options[i].value; 

		arrOldTexts[i] = lb.options[i].text; 
	} 

	arrTexts.sort(); 

	for(i=0; i<lb.length; i++) 
	{ 
		lb.options[i].text = arrTexts[i]; 
		for(j=0; j<lb.length; j++) 
		{ 
			if (arrTexts[i] == arrOldTexts[j]) 
			{ 
				lb.options[i].value = arrValues[j]; 
				j = lb.length; 
			} 
		} 
	} 
}

In deze select komen echter landen voor met een speciaal karakter zoals de Á. Met de sort() functie komt deze onderaan te staan, onder de Z.
Hoe kan ik de array wel op een goede manier sorteren?

Alvast bedankt
 
Dat kan zo: :)
PHP:
function compare(a,b) { return a.localeCompare(b);};
arrTexts.sort(compare);
De functie compare() wordt als parameter van de sort() functie gebruikt.

Dit script is nog wat compacter, het vorige zocht nogal omslachtig de juiste value's weer bij de juiste text. :)
PHP:
<form>
 <select id="landen">
  <option value="Zuid-Afrika">Zuid-Afrika</option>
  <option value="Angola">Angola</option>
  <option value="Ázeland">Ázeland</option>
  <option value="Álezand">Álezand</option>
 </select>
</form>

<script type="text/javascript">

function sortList() {
 var lb = document.getElementById('landen'), sel = new Array();
 for(i = 0; i < lb.length; i++) sel[i] = {text: lb[i].text, value: lb[i].value};
 function compare(a,b) { return (a.text).localeCompare(b.text);};
 sel.sort(compare);
 for(i = 0; i < lb.length; i++) lb[i] = new Option(sel[i].text,sel[i].value);
 };

sortList();

</script>
Ook dat zet het op de juiste volgorde:
Álezand
Angola
Ázeland
Zuid-Afrika



Vr.Gr. Egel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan