2011-11-27 8 views
5

Qui è il contesto:Cosa restituiscono -1, 1 e 0 significa in questo codice 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 

fa -1 restituire l'ultimo argomento? Come quando si utilizza -1 in un array?

+0

L'accesso agli argomenti per indice assomiglia a 'argomenti [0]' e non accetta numeri negativi. – RightSaidFred

risposta

14

No, -1, 0 e 1 in una funzione di confronto vengono utilizzati per indicare al chiamante come deve essere ordinato il primo valore in relazione al secondo. -1 significa che il primo va prima del secondo, 1 significa che va dopo, e 0 significa che sono equivalenti.

La funzione sort utilizza i confronti nella funzione passata per ordinare la funzione. Ad esempio, se si desidera ordinare in ordine inverso, è possibile effettuare la riga 3 return 1; e la riga 5 return -1.

+0

Grazie, ha molto più senso – FireStream

5

-1 significa che value1 è inferiore value2

0 significa che value1 è uguale value2

1 significa che value1 è superiore value2

6

Procedimento sort prende una funzione di confronto opzionale che determina l'ordinamento risultante basato sul seguente:

  • se il suo valore di ritorno è inferiore a zero, quindi ordinare value1 ad un indice inferiore value2
  • se il suo valore di ritorno è zero, quindi lasciare gli indici di value1 e value2 invariato rispetto all'altro
  • se il suo valore di ritorno è maggiore di zero, quindi ordinare value1 ad un indice superiore a value2

noti che dato queste regole, è possibile accorciare il confronto funzione a quanto segue:

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

Onestamente, penso che questa risposta meriti più uptotes rispetto alla mia. – Hal

+0

@harrison_m: Bene, sei libero di cancellare il tuo. ; p – RightSaidFred