3E e 3I Sia: esercizio con array e localstorage in javascript

 Creare un programma IN JAVASCRIPT che gestisca gli elementi di un array (minimo, max. media, ricerca, ordinamento e modifica di un elemento) CON IL LOCAL STORAGE. Due pagine , la prima con il modulo di inserimento degli elementi degli array e la seconda pagina con tutti i risultati richiesti



Pagina 1: Inserimento Dati (index.html)

<!DOCTYPE html>

<html lang="it">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Inserimento Array</title>

</head>

<body>

    <h1>Inserisci Elementi dell'Array</h1>

    <input type="text" id="element-input" placeholder="Inserisci numero">

    <button onclick="aggiungiElemento()">Aggiungi</button>

    <button onclick="calcolaRisultati()">Calcola e vai alla seconda pagina</button>

    <ul id="element-list"></ul>


    <script>

        const elementi = JSON.parse(localStorage.getItem('elementi')) || [];


        function aggiornaLista() {

            const listElement = document.getElementById('element-list');

            listElement.innerHTML = elementi.map((el, index) => `<li>${el} <button onclick="rimuoviElemento(${index})">Rimuovi</button></li>`).join('');

        }


        function aggiungiElemento() {

            const input = document.getElementById('element-input');

            const valore = parseFloat(input.value);

            if (!isNaN(valore)) {

                elementi.push(valore);

                localStorage.setItem('elementi', JSON.stringify(elementi));

                aggiornaLista();

                input.value = '';

            } else {

                alert('Inserisci un numero valido');

            }

        }


        function rimuoviElemento(index) {

            elementi.splice(index, 1);

            localStorage.setItem('elementi', JSON.stringify(elementi));

            aggiornaLista();

        }


        function calcolaRisultati() {

            localStorage.setItem('elementi', JSON.stringify(elementi));

            window.location.href = 'results.html';

        }

        aggiornaLista();

    </script>

</body>

</html>


Pagina 2: Risultati (results.html)

<!DOCTYPE html>

<html lang="it">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Risultati</title>

</head>

<body>

    <h1>Risultati dell'Array</h1>

    <div id="risultati"></div>

    <button onclick="window.location.href='index.html'">Torna alla prima pagina</button>

    <script>

        const elementi = JSON.parse(localStorage.getItem('elementi')) || [];

        function calcolaRisultati() {

            if (elementi.length === 0) {

                document.getElementById('risultati').innerHTML = 'Nessun elemento disponibile.';

                return;

            }

            const minimo = Math.min(...elementi);

            const massimo = Math.max(...elementi);

            const media = elementi.reduce((acc, cur) => acc + cur, 0) / elementi.length;

            const ordinati = [...elementi].sort((a, b) => a - b);

            const risultatiHtml = `

                <p>Minimo: ${minimo}</p>

                <p>Massimo: ${massimo}</p>

                <p>Media: ${media.toFixed(2)}</p>

                <p>Ordinati: ${ordinati.join(', ')}</p>

            `;

            document.getElementById('risultati').innerHTML = risultatiHtml;

        }

        calcolaRisultati();

    </script>

</body>

</html>

Esaminiamo riga per riga sia il file HTML per l'inserimento dei dati che quello per la visualizzazione dei risultati. Questo ti aiuterà a capire come funziona il programma in dettaglio.

 Pagina 1: Inserimento Dati

`index.html`

<!DOCTYPE html>

<html lang="it">

- `<!DOCTYPE html>`: Dichiara il tipo di documento come HTML5.

- `<html lang="it">`: Inizia l'elemento HTML con il linguaggio impostato su italiano.

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Inserimento Array</title>

</head>

- `<head>`: Contiene metadati e link a risorse per il documento HTML.

- `<meta charset="UTF-8">`: Imposta la codifica del carattere su UTF-8, supportando così un'ampia gamma di caratteri.

- `<meta name="viewport" content="width=device-width, initial-scale=1.0">`: Garantisce che la pagina sia visualizzata correttamente su dispositivi mobili, impostando la larghezza a quella del dispositivo.

- `<title>Inserimento Array</title>`: Specifica il titolo della pagina che appare sulla scheda del browser.

<body>

    <h1>Inserisci Elementi dell'Array</h1>

- `<body>`: Inizia il corpo del document che contiene tutto il contenuto visibile.

- `<h1>Inserisci Elementi dell'Array</h1>`: Visualizza un intestazione principale nella pagina.

    <input type="text" id="element-input" placeholder="Inserisci numero">

- `<input type="text" id="element-input" placeholder="Inserisci numero">`: Aggiunge un campo di testo per inserire i numeri con un suggerimento visivo "Inserisci numero".

    <button onclick="aggiungiElemento()">Aggiungi</button>

    <button onclick="calcolaRisultati()">Calcola e vai alla seconda pagina</button>

- `<button onclick="aggiungiElemento()">Aggiungi</button>`: Un pulsante che, quando cliccato, esegue la funzione `aggiungiElemento`.

- `<button onclick="calcolaRisultati()">Calcola e vai alla seconda pagina</button>`: Un altro pulsante che esegue la funzione `calcolaRisultati` per calcolare risultati e spostarsi alla pagina dei risultati.

    <ul id="element-list"></ul>

- `<ul id="element-list"></ul>`: Una lista non ordinata che mostrerà dinamicamente gli elementi dell'array.

    <script>

- `<script>`: Inizia la sezione di script dove saranno scritti i codici JavaScript.

  const elementi = JSON.parse(localStorage.getItem('elementi')) || []; 

- Inizializza una variabile `elementi` che tenta di recuperare un array di elementi salvati nel `localStorage` e li converte da stringa JSON in un array. Se non ci sono elementi salvati, inizia come un array vuoto.

        function aggiornaLista() { 

            const listElement = document.getElementById('element-list');

            listElement.innerHTML = elementi.map((el, index) =>

                `<li>${el} <button onclick="rimuoviElemento(${index})">Rimuovi</button></li>`

            ).join('');

        }

- `function aggiornaLista()`: Definisce una funzione per aggiornare la visualizzazione degli elementi nella lista.

- `const listElement = document.getElementById('element-list');`: Ottiene un riferimento all'elemento HTML con l'id `element-list`.

- `listElement.innerHTML = elementi.map(...).join('');`: Trasforma ogni elemento dell'array in una stringa HTML di list item con un pulsante per la rimozione, quindi aggiorna l'HTML della lista.

        function aggiungiElemento() { 

            const input = document.getElementById('element-input');

            const valore = parseFloat(input.value);

            if (!isNaN(valore)) {

                elementi.push(valore);

                localStorage.setItem('elementi', JSON.stringify(elementi));

                aggiornaLista();

                input.value = ''; // Cancella il campo di input

            } else {

                alert('Inserisci un numero valido');

            }

        }

- `function aggiungiElemento()`: Definisce una funzione per aggiungere un nuovo elemento.

- `const input = document.getElementById('element-input');`: Ottiene il valore attuale del campo di input.

- `const valore = parseFloat(input.value);`: Converte il valore dell'input in un numero.

- Controlla se `valore` è un numero (`!isNaN(valore)`), quindi lo aggiunge all'array `elementi`, aggiorna il `localStorage`, aggiorna la lista visualizzata e svuota il campo di input.

- Se non è un numero, mostra un avviso.

```javascript

        function rimuoviElemento(index) {

            elementi.splice(index, 1);

            localStorage.setItem('elementi', JSON.stringify(elementi));

            aggiornaLista();

        }

- `function rimuoviElemento(index)`: Definisce una funzione per rimuovere un elemento in base all'indice.

- `elementi.splice(index, 1);`: Rimuove un elemento dall'array.

- Aggiorna il `localStorage` e la lista visualizzata.

        function calcolaRisultati() {

            localStorage.setItem('elementi', JSON.stringify(elementi));

            window.location.href = 'results.html'; 

        }

- `function calcolaRisultati()`: Definisce una funzione per salvare i dati e cambiare pagina.

- `window.location.href = 'results.html';`: Cambia la pagina corrente alla pagina dei risultati.

        aggiornaLista(); 

    </script>

</body>

- `aggiornaLista();`: Chiama la funzione per aggiornare immediatamente la lista quando la pagina viene caricata.

- `</body>`: Chiude il corpo del documento.


Pagina 2: Risultati

`results.html`

<!DOCTYPE html>

<html lang="it">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Risultati</title>

</head>

<body>

    <h1>Risultati dell'Array</h1>

    <div id="risultati"></div>

    <button onclick="window.location.href='index.html'">Torna alla prima pagina</button>

    <script>

        const elementi = JSON.parse(localStorage.getItem('elementi')) || [];

- Questa parte è simile alla prima pagina per quanto riguarda la struttura HTML.

- `const elementi = JSON.parse(localStorage.getItem('elementi')) || [];`: Recupera l'array di elementi dal `localStorage`.

        function calcolaRisultati() {

            if (elementi.length === 0) {

                document.getElementById('risultati').innerHTML = 'Nessun elemento disponibile.';

                return;

            }

            const minimo = Math.min(...elementi);

            const massimo = Math.max(...elementi);

            const media = elementi.reduce((acc, cur) => acc + cur, 0) / elementi.length;

            const ordinati = [...elementi].sort((a, b) => a - b);

            const risultatiHtml = `

                <p>Minimo: ${minimo}</p>

                <p>Massimo: ${massimo}</p>

                <p>Media: ${media.toFixed(2)}</p>

                <p>Ordinati: ${ordinati.join(', ')}</p>

            `;

            document.getElementById('risultati').innerHTML = risultatiHtml;

        }

        calcolaRisultati();

    </script>

</body>

</html>

Dettagli

- `function calcolaRisultati()`: Calcola e visualizza i risultati.

- Controlla se l'array `elementi` è vuoto; in caso affermativo, mostra un messaggio appropriato e interrompe l'esecuzione della funzione.

- Calcola:

  - `minimo`: Il valore minimo degli elementi usando `Math.min`.

  - `massimo`: Il valore massimo usando `Math.max`.

  - `media`: Somma di tutti gli elementi divisa per il numero di elementi nell'array.

  - `ordinati`: Copia l'array e lo ordina in ordine crescente.

- Crea una stringa HTML con risultati formattati e aggiorna l'elemento HTML con l'id `risultati` per mostrarli.

- `calcolaRisultati();`: Esegue immediatamente la funzione quando la pagina viene caricata per mostrare i risultati.


Commenti

Post popolari in questo blog

Esercizi in Excel e fogli di Google

Simulazioni di reti (con Cisco Packet Tracer)