Esercitazione JS

JS CASA JS Introduzione JS Dove si va Uscita JS Dichiarazioni JS Sintassi JS Commenti JS Variabili JS JS Let JS Cost Operatori JS JS aritmetica Assegnazione JS Tipi di dati JS Funzioni JS Oggetti JS Eventi JS Corde JS Metodi di stringa JS Ricerca di stringhe JS Modelli di stringhe JS Numeri JS Metodi numerici JS Matrici JS Metodi array JS Ordinamento matrice JS Iterazione dell'array JS Cost. array JS Date JS Formati data JS Metodi di acquisizione della data JS Metodi di impostazione della data JS JS matematica JS Casuale JS booleani Confronti JS Condizioni JS JS Switch Ciclo JS per JS Loop per In Ciclo JS per di JS Loop mentre JS Break Iterabili JS Insiemi JS Mappe JS Tipo JS Conversione del tipo JS JS bit a bit JS RegExp Errori JS Ambito JS JS sollevamento Modalità rigorosa JS JS questa parola chiave Funzione freccia JS Classi JS JS JSON Debug JS Guida allo stile JS Migliori Pratiche JS Errori di JS Prestazioni JS Parole riservate JS

Versioni JS

Versioni JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Storia di JS

Oggetti JS

Definizioni di oggetti Proprietà dell'oggetto Metodi dell'oggetto Visualizzazione di oggetti Accessori per oggetti Costruttori di oggetti Prototipi di oggetti Iterabili di oggetti Insiemi di oggetti Mappe degli oggetti Riferimento all'oggetto

Funzioni JS

Definizioni delle funzioni Parametri di funzione Invocazione di funzione Chiamata di funzione Funzione Applica Chiusure di funzioni

Classi JS

Introduzione alla classe Eredità di classe Classe statica

JS Async

Richiamate JS JS asincrono JS Promesse JS Async/Attendere

JS HTML DOM

DOM Introduzione Metodi DOM Documento DOM Elementi DOM DOM HTML Moduli DOM DOM CSS Animazioni DOM Eventi DOM Ascoltatore di eventi DOM Navigazione DOM Nodi DOM Collezioni DOM Elenchi di nodi DOM

Distinta base del browser JS

Finestra JS Schermo JS Posizione JS Storia di JS Navigatore JS Avviso popup JS JS tempismo Biscotti JS

API Web JS

Introduzione all'API Web API dei moduli Web API Cronologia web API di archiviazione Web API Web Worker API di recupero Web API di geolocalizzazione web

JS AJAX

Introduzione all'Ajax AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

JS JSON

Introduzione JSON Sintassi JSON JSON contro XML Tipi di dati JSON Analisi JSON JSON Stringify Oggetti JSON Matrici JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selettori jQuery jQuery HTML jQuery CSS jQuery DOM

Grafica JS

Grafica JS Tela JS JS Plotly JS Chart.js Grafico di Google JS JS D3.js

Esempi JS

Esempi JS JS HTML DOM Input HTML JS Oggetti HTML JS Eventi HTML JS Browser JS Editore JS Esercizi JS Quiz J.S Certificato JS

Riferimenti JS

Oggetti JavaScript Oggetti HTML DOM


Matrici di ordinamento JavaScript


Ordinamento di una matrice

Il sort()metodo ordina un array in ordine alfabetico:

Esempio

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

Inversione di un array

Il reverse()metodo inverte gli elementi in una matrice.

Puoi usarlo per ordinare un array in ordine decrescente:

Esempio

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

Ordinamento numerico

Per impostazione predefinita, la sort()funzione ordina i valori come stringhe .

Funziona bene per gli archi ("Apple" viene prima di "Banana").

Tuttavia, se i numeri sono ordinati come stringhe, "25" è maggiore di "100", perché "2" è maggiore di "1".

Per questo motivo, il sort()metodo produrrà un risultato errato durante l'ordinamento dei numeri.

Puoi risolvere questo problema fornendo una funzione di confronto :

Esempio

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

Usa lo stesso trucco per ordinare un array discendente:

Esempio

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});


La funzione di confronto

Lo scopo della funzione di confronto è definire un ordinamento alternativo.

La funzione di confronto dovrebbe restituire un valore negativo, zero o positivo, a seconda degli argomenti:

function(a, b){return a - b}

Quando la sort()funzione confronta due valori, invia i valori alla funzione di confronto e ordina i valori in base al valore restituito (negativo, zero, positivo).

Se il risultato è negativo aviene ordinato prima di b.

Se il risultato è positivo bviene ordinato prima a.

Se il risultato è 0 non vengono apportate modifiche all'ordinamento dei due valori.

Esempio:

La funzione di confronto confronta tutti i valori nell'array, due valori alla volta (a, b).

Quando si confrontano 40 e 100, il sort()metodo chiama la funzione di confronto(40, 100).

La funzione calcola 40 - 100 (a - b)e poiché il risultato è negativo (-60), la funzione di ordinamento ordinerà 40 come un valore inferiore a 100.

Puoi utilizzare questo frammento di codice per sperimentare l'ordinamento numerico e alfabetico:

<button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
const 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>

Ordinamento di una matrice in ordine casuale

Esempio

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});


Il metodo Fisher Yates

L'esempio sopra, array .sort(), non è accurato, favorirà alcuni numeri rispetto ad altri.

Il metodo corretto più popolare, è chiamato Fisher Yates shuffle, ed è stato introdotto nella scienza dei dati già nel 1938!

In JavaScript il metodo può essere tradotto in questo:

Esempio

const points = [40, 100, 1, 5, 25, 10];

for (let i = points.length -1; i > 0; i--) {
  let j = Math.floor(Math.random() * i)
  let k = points[i]
  points[i] = points[j]
  points[j] = k
}


Trova il valore dell'array più alto (o più basso).

Non ci sono funzioni integrate per trovare il valore massimo o minimo in una matrice.

Tuttavia, dopo aver ordinato una matrice, è possibile utilizzare l'indice per ottenere i valori più alti e più bassi.

Ordinamento crescente:

Esempio

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

Ordinamento decrescente:

Esempio

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

L'ordinamento di un intero array è un metodo molto inefficiente se si desidera trovare solo il valore più alto (o più basso).


Utilizzo di Math.max() su un array

Puoi usare Math.max.applyper trovare il numero più alto in un array:

Esempio

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

Math.max.apply(null, [1, 2, 3])è equivalente a Math.max(1, 2, 3).


Utilizzo di Math.min() su un array

Puoi usare Math.min.applyper trovare il numero più basso in un array:

Esempio

function myArrayMin(arr) {
  return Math.min.apply(null, arr);
}

Math.min.apply(null, [1, 2, 3])è equivalente a Math.min(1, 2, 3).


I miei metodi JavaScript min/max

La soluzione più veloce è utilizzare un metodo "fatto in casa".

Questa funzione scorre un array confrontando ogni valore con il valore più alto trovato:

Esempio (Trova massimo)

function myArrayMax(arr) {
  let len = arr.length;
  let max = -Infinity;
  while (len--) {
    if (arr[len] > max) {
      max = arr[len];
    }
  }
  return max;
}

Questa funzione scorre un array confrontando ogni valore con il valore più basso trovato:

Esempio (Trova min)

function myArrayMin(arr) {
  let len = arr.length;
  let min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
}


Ordinamento di array di oggetti

Gli array JavaScript spesso contengono oggetti:

Esempio

const cars = [
  {type:"Volvo", year:2016},
  {type:"Saab", year:2001},
  {type:"BMW", year:2010}
];

Anche se gli oggetti hanno proprietà di tipi di dati diversi, il sort()metodo può essere utilizzato per ordinare l'array.

La soluzione è scrivere una funzione di confronto per confrontare i valori della proprietà:

Esempio

cars.sort(function(a, b){return a.year - b.year});

Il confronto delle proprietà delle stringhe è un po' più complesso:

Esempio

cars.sort(function(a, b){
  let x = a.type.toLowerCase();
  let y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});

Riferimento completo all'array

Per un riferimento completo all'array, vai al nostro:

Riferimento completo all'array JavaScript .

Il riferimento contiene descrizioni ed esempi di tutte le proprietà e i metodi dell'array.

Mettiti alla prova con gli esercizi

Esercizio:

Utilizzare il metodo Array corretto per ordinare l' fruitsarray in ordine alfabetico.

const fruits = ["Banana", "Orange", "Apple", "Kiwi"];
;