English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
L'oggetto Array in JavaScript ha un metodo di ordinamento sort() che ordina gli elementi dell'array, ma a volte i risultati dell'ordinamento non sono soddisfacenti, come
var arr = [12, 1, 2, 21, 3]; arr.sort(); alert(arr); Il risultato ottenuto è 1,12,2,21,3
Perché? Perché l'ordinamento predefinito in JavaScript è in base al codice ASCII, quindi i numeri sono ordinati secondo la loro forma di stringa.
var strArr = ['a', '2', 'a2', '2a', 'b', '3']; alert(strArr.sort());
Che risultato otteniamo? 2,2a,3,a,a2,b
Poiché il codice ASCII dei numeri è più piccolo rispetto a quello delle lettere, i numeri vengono messi davanti e le lettere vengono messi dietro.
Come possiamo trattare l'array arr per continuare a ordinare numericamente?
JavaScript ci fornisce un punto di ingresso per passare un parametro a sort(), ovvero la funzione di confronto, per comunicare all'algoritmo di ordinamento quale relazione c'è tra i valori.
La funzione di confronto è una funzione con un algoritmo specifico.
function compare_fn(value1, value2) { if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0; } }
Passare la funzione di confronto compare_fn a sort, quindi ordinare e poi esportare
arr.sort(compare_fn); alert(arr); Ottenere 1, 2, 3, 12, 21
La definizione del valore di ritorno del metodo sort dell'oggetto Array in JavaScript è
Valore negativo: se il primo parametro passato è minore del secondo parametro
Zero: i due valori sono uguali
Valore positivo: se il primo parametro è maggiore del secondo parametro
La funzione di confronto può essere abbreviata come
function compare_fn(value1, value2) { return value1 - value2; }
Questo confronto è in ordine crescente
Se si desidera ordinare in ordine decrescente, è sufficiente cambiare il segno del valore di ritorno, invertendo tutti i valori di ritorno.
La funzione di confronto abbreviata è
function compare_fn(value1, value2) { return -(value1 - value2); }
cioè
function compare_fn(value1, value2) { return value2 - value1; }
La notazione semplice è: in ordine crescente; in ordine decrescente.
Ecco tutto il contenuto che l'autore ha condiviso su come ordinare l'array Array con il metodo sort, speriamo che sia utile come riferimento e che sosteniate il tutorial Shouting.