Ordinamento degli array JavaScript
- Pagina precedente Ricerca array JS
- Pagina successiva Iterazione array JS
sort()
Il metodo è uno dei metodi più potenti dell'array.
Ordinamento dell'array
sort()
Il metodo ordina l'array in ordine alfabetico:
Esempio
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ordina gli elementi di fruits
Inverte l'array
reverse()
Il metodo inverte gli elementi dell'array.
Puoi usarlo per ordinare un array in ordine decrescente:
Esempio
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ordina gli elementi di fruits fruits.reverse(); // Inverte l'ordine degli elementi
Ordinamento numerico
Per default,sort()
La funzione ordinastringheordina i valori in base all'ordine.
Questa funzione è molto adatta alle stringhe ("Apple" viene prima di "Banana").
Ma se i numeri vengono ordinati come stringhe, "25" è maggiore di "100", perché "2" è maggiore di "1".
Per questo motivo,sort()
Il metodo può produrre risultati non corretti durante l'ordinamento numerico.
Attraverso unaFunzione di rapportoPer correggere questo problema:
Esempio
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Usa la stessa tecnica per ordinare un array in ordine decrescente:
Esempio
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Funzione di rapporto
L'obiettivo della funzione di confronto è definire un'ordine di sortimento diverso.
La funzione di confronto deve restituire un valore negativo, zero o positivo, a seconda dei parametri:
function(a, b){return a-b}
Quando sort()
Quando la funzione confronta due valori, invia i valori alla funzione di confronto e ordina questi valori in base al valore restituito (negativo, zero o positivo).
Esempio:
Quando si confrontano 40 e 100,sort()
Il metodo chiama la funzione di confronto function(40,100).
La funzione calcola 40-100 e restituisce -60 (valore negativo).
La funzione di ordinamento assegnerà un valore inferiore a 40 rispetto a 100.
Puoi utilizzare il seguente snippet di codice per testare l'ordinamento numerico e letterale:
<button onclick="myFunction1()">Ordina per lettere</button> <button onclick="myFunction2()">Ordina per numero</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
Ordina l'array in ordine casuale
Esempio
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Trova il valore più alto (o più basso) dell'array
JavaScript non fornisce una funzione integrata per trovare il valore massimo o minimo di un array.
Ma dopo aver ordinato l'array, puoi usare gli indici per ottenere il valore più alto o più basso.
Ordinamento crescente:
Esempio
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Ora points[0] contiene il valore più basso // E points[points.length-1] contiene il valore più alto
Ordinamento decrescente:
Esempio
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Ora points[0] contiene il valore più alto // E points[points.length-1] contiene il valore più basso
Se hai bisogno solo di trovare il valore più alto o più basso, ordinare l'intero array è un metodo estremamente inefficiente.
applica Math.max() all'array
Puoi usare Math.max.apply
per trovare il valore più alto dell'array:
Esempio
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
uguale a Math.max(1, 2, 3)
.
applica Math.min() all'array
Puoi usare Math.min.apply
per trovare il valore più basso dell'array:
Esempio
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
uguale a Math.min(1, 2, 3)
.
Mie funzioni Min / Max JavaScript
Il metodo più veloce è utilizzare un metodo 'fatto in casa'.
Questa funzione esplora l'array, confrontando ogni valore con il valore più alto trovato:
Esempio (trovare Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Questa funzione esplora l'array, confrontando ogni valore con il valore più basso trovato:
Esempio (trovare Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Ordinamento array di oggetti
Gli array JavaScript spesso contengono oggetti:
Esempio
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Anche se gli oggetti possiedono attributi di tipo dati diversi:sort()
Questo metodo può ancora essere utilizzato per ordinare gli array.
La soluzione è confrontare i valori delle proprietà attraverso una funzione di confronto:
Esempio
cars.sort(function(a, b){return a.year - b.year});
La comparazione delle proprietà delle stringhe è un po' più complessa:
Esempio
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- Pagina precedente Ricerca array JS
- Pagina successiva Iterazione array JS