Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/06/2012, 21:37
furoya
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 2 meses
Puntos: 317
Respuesta: Array ordenar y eliminar duplicados

Supongo que el tema se quedará así. Yo estaba seguro de haber hecho un "ordenador alfabético" por fuera del ASCII, pero no sé dónde anda y no me sale de nuevo. El problema de

Cita:
Iniciado por intergus
Necesito ordenar un array de tal forma que no me ordene primero las mayusculas y las minusculas despues, sino que lo haga alfabéticamente independientemente de si está en minusculas o no.
Es que se podría interpretar como que se pasa todo a minúsculas, y se ordena. Pero también puede que se refiera justamente al orden del ASCII, que primero tiene el alfabeto en mayúsculas y después en minúsculas. Por no hablar de caracteres como la "Ñ", que está fuera de orden para el español.

Entonces el punto es ¿y cómo lo ordenamos?.

¿0123456789AaBbCcDd...WwXxYyZz?
¿Y con las vocales acentuadas, qué hacemos?


Bien, en realidad no era esto lo que quería comentar. De última se pone todo en minúscula y se ve el asunto más tarde.

······································


¿Soy un inútil, o no hay una forma de hacer un replace() que funcione en elementos de array y no sólo en sub-cadenas?

Esto es una chanchada, pero me emperré en usar replace(), así que me la pasé cambiando entre array y string para contar y reemplazar, en la eliminación de duplicados.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<script type="text/javascript">
var cadena = ["Delta", "alpha", "CHARLIE", "bravo", "delta", "delta", "AlPhA"]; 

function ordena(){
var minusculizado = cadena.toString().toLowerCase(); alert(minusculizado)
var ordenado = minusculizado.split(",").sort(); alert(ordenado)
var desduplicado = [];

while(ordenado != ""){
var cadaPalabra = ordenado.shift(); alert(cadaPalabra+" ·· "+ordenado)
var cadaPalabraConComa = cadaPalabra + ","; alert(cadaPalabraConComa)
var expresionregular = new RegExp(cadaPalabraConComa,"g"); alert(expresionregular)
ordenado = ordenado.toString() + ","; alert(ordenado+" ordenado.toString")
ordenado = ordenado.replace(expresionregular,""); alert(ordenado+" ordenado.replace")
desduplicado.push(cadaPalabra); alert(desduplicado+" desduplicado")
ordenado = ordenado.split(","); alert(ordenado+" ordenado.split")
ordenado.pop(); alert(ordenado+" ordenado.pop")
}

prompt("",desduplicado)
}

onload = ordena;
</script>
</head>
<body></body>
</html>
Al menos no usé un length para limitar un for.

Y tampoco comenté las alertas. Si quieren las sacan antes de probar.

Por supuesto, tienen todo el derecho del mundo a mencionar esa coma intermitente.


(¡dioses!, lo posteo antes de que me arrepienta...)