Aquí tienes otra alternativa, que no digo que esté ni mejor ni peor:
Código javascript
:
Ver originalfunction compareIgnoreCase(a,b) {
return (normalize(a) > normalize(b));
}
function normalize(a) {
return a.toLowerCase()
.replace(/[Áá]/gi,"a").replace(/[Éé]/gi,"e").replace(/[Íí]/gi,"i")
.replace(/[Óó]/gi,"o").replace(/[Úú]/gi,"u").replace(/[Ññ]/gi,"nzz");
}
['Bolivia', 'bebé', 'Papa', 'papá', 'pintar', 'Ángel', 'piñata',
'pimpollo', 'pirata', 'árbol', 'ursulina', 'albahaca', 'Alabama',
'zanahora', 'Úrsula', 'Teherán', 'tomate'].sort(compareIgnoreCase);
Panino5001, he encontrado un error un poco raro con tu código. Bueno, dos, pero uno es que simplemente no has contemplado la ñ, pero bueno eso es una trivialidad. El problema es... curioso. Prueba a correr tu código con un vector como este:
Código:
['bebe','bebé','Papa','papá']