Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/08/2005, 22:44
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
ordenar array manteniendo ciertos elementos

Quiero ordenar un array de menor a mayor. Ok, esto es facil. Me creo un criterio de ordenacion tal que asi:
Código PHP:
function desorden_aleat(a,b) {
    if(
a<b) return -1;
    else if(
a>b) return 1;
    else return 
0;

Y funciona.

Ahora quiero que se "salte" ciertos elementos. Es decir, que si un elemento por ejemplo es "-1", que mantenga su posicion. Pensaba que era tan facil como hacer:
Código PHP:
function desorden_aleat(a,b) {
    if(
a==-|| b==-1) return -1;
    if(
a<b) return -1;
    else if(
a>b) return 1;
    else return 
0;

Pero no funciona.

La verdad, he estado devanándome lo sesos para hacerlo, pero no encuentro solución.

Este es mi codigo de ejemplo completo:
Código PHP:
var a1=[1,3,-1,8,-1,2,5,9,3];
var 
a2=[2,-1,6,2,4,5,-1,2,-1];
function 
desorden_aleat(a,b) {
    if(
a==-|| b==-1) return -1;
    if(
a<b) return -1;
    else if(
a>b) return 1;
    else return 
0;
}


document.write(a1+"<br>");
a1.sort(desorden_aleat);
document.write(a1+"<br><br>");


document.write(a2+"<br>");
a2.sort(desorden_aleat);
document.write(a2); 
Los "-1" deben mantener su posicion, y los demas elementos ordenarse como su los "-1" no existieses.

¿Alguna ayuda?

__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.