2011-11-27 30 views
5

Aquí es el contexto:¿Qué significan -1, 1 y 0 en este código Javascript?

function compare (value1, value2) { 
    if(value1 < value2) { 
     return -1; 
    } else if (value1 > value2) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 

var values = [0, 6, 8, 5]; 
values.sort(compare); 
alert(values); // 0,5,6,8 

hace -1 devolver el último argumento? Al igual que cuando se usa -1 en una matriz?

+0

Accediendo a los argumentos por índice se ve como 'argumentos [0]', y no aceptará números negativos. – RightSaidFred

Respuesta

14

No, -1, 0 y 1 en una función de comparación se utilizan para decirle a la persona que llama cómo se debe ordenar el primer valor en relación con el segundo. -1 significa que el primero va antes del segundo, 1 significa que va después, y 0 significa que son equivalentes.

La función sort usa las comparaciones en la función que pasa para ordenar la función. Por ejemplo, si desea ordenar en orden inverso, puede hacer la línea 3 return 1; y la línea 5 return -1.

+0

gracias, tiene mucho más sentido – FireStream

5

-1 significa que value1 es menor que value2

0 significa que value1 es igual a value2

1 significa que value1 es mayor que value2

6

El método sort realiza una función de comparación opcional que determina el orden de clasificación resultante basado en lo siguiente:

  • si su valor de retorno es menor que cero, a continuación, ordenar value1 a un índice menor que value2
  • si su valor de retorno es cero, entonces dejar los índices de value1 y value2 sin cambios con respecto a la otra
  • si su valor de retorno es mayor que cero, a continuación, ordenar value1 a un índice más alto que value2

Tenga en cuenta que dado estas reglas, es posible acortar su comparación función a lo siguiente:

function compare(value1, value2) { 
    return value1 - value2; 
} 
+1

Honestamente, creo que esta respuesta merece más votos positivos que los míos. – Hal

+0

@harrison_m: Bueno, puedes borrar el tuyo. ;pag – RightSaidFred

Cuestiones relacionadas