< Home
Stampa

Esercizi di manipolazione dati in Javascript

Sommario

Array

  1. Dato un array di numeri (const numeri = [10, 20, 30, 40, 50, 60];), estrai i primi 2 e gli ultimi 2 elementi in due nuovi array senza modificare l’originale.
  2. Dato un array di frutti (const frutti = ["mela", "banana", "pesca", "uva"];), rimuovi l’elemento all’indice 2 e inserisci due nuovi frutti (“kiwi”, “mango”) in quella stessa posizione.
  3. Calcola la somma di tutti gli elementi di un array numerico utilizzando un ciclo for…of.
  4. Dato un array di stringhe, usa forEach per contare quante stringhe hanno una lunghezza superiore a 5 caratteri.
  5. Crea un nuovo array contenente gli elementi di un array dato in ordine inverso, usando un ciclo for…of senza usare reverse().
  6. Crea un array di valori casuali ed esegui una deep copy.
  7. Esegui una copia di un array di valori interi usando l’operatore spread (...)
  8. Dato un array di temperature in Celsius, crea un nuovo array con le temperature convertite in Fahrenheit (F = C * 1.8 + 32). Usare map.
  9. Dato un array di voti scolastici, ottieni solo i voti sufficienti (maggiori o uguali a 6).
  10. Trova il primo numero maggiore di 50 all’interno di un array di numeri.
  11. Ordina un array di numeri in ordine decrescente in modo immutabile (cioè creando una copia con spread).
  12. Trova il massimo di un array di numeri con reduce.
  13. Calcola la somma dei valori di un array di numeri con reduce.
  14. Unisci più array con l’operatore spread.
  15. Dato un array di numeri, filtra soltanto i numeri dispari e restituisci un nuovo array contenente i loro quadrati (usa filter e map)
  16. Dato un array di parole, crea una frase unica separate da spazi con il punto finale.
  17. Data una stringa di tag separati da virgola e spazi extra, convertila in un array di tag puliti.
  18. Dato un array estrai il primo elemento.
  19. Dato un array estrai l’ultimo elemento.
  20. Converti un titolo di articolo in uno “slug” per URL (tutto minuscolo, parole separate da trattini). esempio “Guida galattica per autostoppisti” -> “guida-galattica-per-autostoppisti”.

Dizionari

  1. Dato il seguente array di dizionari
const prodotti = [
{ nome: "Cuffie", prezzo: 30, disponibile: true },
{ nome: "Mouse", prezzo: 20, disponibile: false },
{ nome: "Tastiera", prezzo: 60, disponibile: true },
{ nome: "Mousepad", prezzo: 15, disponibile: true }
];

Mostra i prodotti disponibili con prezzo < 50.

2. Dato un array di parole, usa reduce per creare un oggetto dizionario che mappa ogni parola al numero di volte che compare.

3. Dato l’array dell’esercizio 1, crea un array di nomi prodotti (usare map)

4. Dato l’array dell’esercizio 1, cercare il primo oggetto di prezzo 20 (usare find)

5. Dato questo array:

const studenti = [
{ nome: "Anna", media: 8.5 },
{ nome: "Paolo", media: 6.8 },
{ nome: "Elena", media: 9.2 }
];

Ordinarlo in base alla media voti.

6. Dato questo array:

const ordini = [
{ id: 1, importo: 120 },
{ id: 2, importo: 80 },
{ id: 3, importo: 250 }
];

Calcolare il valore totale con reduce.

7. Dato l’array dell’esercizio 6, crearne una copia con importo maggiorato del 22% (iva).

8. Dato il seguente array:

const persone = [
{ nome: "Luca", citta: "Roma" },
{ nome: "Sara", citta: "Milano" },
{ nome: "Matteo", citta: "Roma" }
];

Creare un dizionario che raggruppa le persone per città:

{
  "Milano": ["Sara"],
  "Roma": ["Luca", "Matteo"]
}

usare reduce.

9. Unisci due dizionari con spread:

const profilo = { nome: "Giacomo", email: "g@example.com" };
const impostazioni = { tema: "dark", notifiche: true };

10. Dato il seguente dizionario:

const tasks = [
{ progetto: "A", completato: true },
{ progetto: "B", completato: false },
{ progetto: "A", completato: true },
{ progetto: "B", completato: true }
];

Calcolare quanti task sono completati per progetto. Il risultato sarà quindi questo. Usare reduce.

{ 
 "A": 2,
 "B": 1
}

CSV

1. Calciatori

Dato un CSV come il seguente:

Nome,Cognome,Ruolo,Età
Luca,Rossi,Portiere,25
Marco,Bianchi,Difensore,28
Giovanni,Esposito,Centrocampista,22
Alessandro,Russo,Attaccante,30
Federico,Romano,Difensore,27
Matteo,Colombo,Centrocampista,24
Simone,Ricci,Attaccante,29
Andrea,Marino,Portiere,26

Scrivere una funzione generatrice che crea un oggetto con i seguenti metodi pubblici:

a) load(csv): funzione che riceve in input la stringa CSV, e salva (in una variabile privata) la lista dei giocatori (va bene sia come lista di dizionari che come lista di liste).

b) role(roleName): funzione che riceve in ingresso un ruolo (es. “centrocampista”) e restituisce l’elenco dei giocatori che ricoprono tale ruolo ordinata per età.

2. Magazzino

Dato un CSV come il seguente:

nome,categoria,prezzo,quantità
pane,alimenti,2,108
latte,alimenti,1,89
uova,alimenti,3,64
pasta,alimenti,2,120
riso,alimenti,2,75
farina,alimenti,1,90
zucchero,alimenti,1,60
sale,alimenti,1,40
olio,alimenti,5,55
burro,alimenti,3,45
formaggio,alimenti,4,38
yogurt,alimenti,2,50
biscotti,alimenti,2,70
caffè,alimenti,4,65
tè,alimenti,3,42
miele,alimenti,5,30
acqua,bevande,1,200
succo,bevande,2,95
cola,bevande,2,110
birra,bevande,3,85
vino,bevande,6,40
detersivo,casalinghi,2,53
sapone,casalinghi,1,88
spugna,casalinghi,1,60
candeggina,casalinghi,2,35
scottex,casalinghi,3,70
sacchetti,casalinghi,2,100
piatti,casalinghi,5,25
bicchieri,casalinghi,4,30
pentola,casalinghi,15,10
padella,casalinghi,18,8
forchette,casalinghi,6,40
coltelli,casalinghi,8,35
cucchiai,casalinghi,6,45
spazzolino,igiene,2,90
dentifricio,igiene,3,75
shampoo,igiene,4,60
bagnoschiuma,igiene,4,55
deodorante,igiene,3,65
rasoio,igiene,5,40
crema,igiene,6,35
asciugamani,igiene,10,20
lenzuola,casa,25,12
cuscino,casa,18,15
coperta,casa,30,8
lampadina,casa,3,50
prolunga,casa,7,25
caricatore,elettronica,12,30
mouse,elettronica,15,20
tastiera,elettronica,25,10

a) Leggere la stringa CSV e produrre un oggetto lista che contiene come elementi gli oggetti della lista (sotto forma di dizionari).

b) Scrivere una funzione che riceve in ingresso il dizionario creato e genera un CSV risultato con questa struttura:

nome, categoria, valore

Dove valore indica il valore totale (prezzo * quantità)

Ad esempio:

nome, categoria, valore
pane, alimenti, 216
latte, alimenti, 89
detersivo, casalinghi, 106

c) Scrivere una funzione filtro che riceve in ingresso un un prezzo e restituisce una lista contenente tutti i prodotti di prezzo inferiore o uguale a quello ricevuto in ingresso. 

Es:

filtro(2) -> il risultato sarà una lista degli oggetti che rispondono al requisito.

3. Voti

Sia dato il seguente CSV:

nome, cognome, italiano, storia, matematica, informatica, inglese, tpsi, gpoi
Mario, Rossi, 6, 7, 6, 6, 5, 6, 6
Sandra, Verdi, 5, 5, 7, 7, 10, 8, 7

Scrivere una funzione che riceve in ingresso la stringa contenente il CSV e genera un CSV risultato con questa struttura:

nome, cognome, media, status, Insufficienti

Dove:

media: indica la media dei voti

status: indicare se “promosso” (media >= 6) o “bocciato” (media < 6)

insufficienti: numero di materie insufficienti

Ad esempio:

nome, cognome, media, status, Insufficienti
Mario, Rossi, 6.0, promosso, 1
Sandra, Verdi, 7.0, promosso, 2

4. Appartamenti

Dato un CSV come il seguente:

Tipologia,Metratura,Prezzo,Zona 
Appartamento,85,300000,Centro Storico 
Villa,200,1200000,San Siro 
Monolocale,45,150000,Porta Romana 
Bilocale,65,250000,Navigli 
Attico,120,800000,Brera 
Loft,90,400000,Isola 
Trilocale,100,350000,Bicocca 
Quadrilocale,150,600000,CityLife

Scrivere un componente che con i seguenti metodi pubblici:

1.1  load(csv): funzione che riceve in input la stringa CSV, e salva (in una variabile privata) la lista degli appartamenti (come oggetto Javascript).

1.2 render(parentElement): funzione che genera una tabella coi dati degli appartamenti e la inserisce come html in parentElement. 

1.3 add(data): funzione che riceve in input un dizionario con i dati di un nuovo immobile (tipologia, metratura, prezzo zona) e li aggiunge alla lista. Poi esegue automaticamente una render.

5. Temperature

Dato un CSV come il seguente:

Luogo,Data,Temperatura
Roma,2025-04-01,12.3
Milano,2025-04-01,11.6
Palermo,2025-04-01,17.1
Milano,2025-04-01,12.1
Palermo,2025-04-02,18.0
Roma,2025-04-02,11.8
...

Scrivere un programma che:

  • carica i dati in un array di dizionari
  • stampa città, giorno e temperatura con la temperatura più alta
  • stampa la città con la temperatura media più alta
  • crea un CSV come il seguente
Luogo,TemperaturaMedia
Roma,17.5
Milano,12.9
Palermo,19.1
...

6. Vendite

Dato un CSV come il seguente:

Anno,Ricavi,Spese
2020,200000,250000
2021,220000,240000
2022,230000,240000
2023,240000,230000
2024,250000,220000
...

Scrivere un programma che:

  • carica i dati in un array di dizionari
  • stampa l’anno in cui i ricavi superano le spese
  • stampa i ricavi totali e le spese totali
  • crea un CSV come il seguente
Anno,Utile
2020,-50000
2021,-20000
2022,-10000
2023,10000
2024,30000
...

7. Laureati

Nel CSV seguente sono riportati i dati degli studenti laureati (fonte: https://dati-ustat.mur.gov.it/dataset/laureati/resource/43df861d-7345-481a-9803-2eb236aa022e )

_id,AnnoS,Lau_M,Lau_F,Lau,fonte dati,Note
1,2024,173877,237705,411582,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,dati provvisori
2,2023,167422,225997,393419,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
3,2022,157079,210412,367491,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
4,2021,160299,213650,373949,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
5,2020,153496,200515,354011,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
6,2019,149033,195066,344099,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
7,2018,141113,187151,328264,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
8,2017,134809,183674,318483,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
9,2016,131595,180589,312184,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
10,2015,127132,178051,305183,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
11,2014,126072,182088,308160,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
12,2013,125992,181939,307931,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
13,2012,123805,178900,302705,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
14,2011,121951,174911,296862,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
15,2010,117949,168041,285990,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
16,2009,122.877,169.933,292.810,Rilevazione Istruzione Universitaria,""
17,2008,125.050,169.927,294.977,Rilevazione Istruzione Universitaria,""
18,2007,126.017,174.114,300.131,Rilevazione Istruzione Universitaria,""
19,2006,128.106,173.270,301.376,Rilevazione Istruzione Universitaria,""
20,2005,128.869,172.429,301.298,Rilevazione Istruzione Universitaria,""
21,2004,114.123,154.698,268.821,Rilevazione Istruzione Universitaria,""
22,2003,103.355,131.584,234.939,Rilevazione Istruzione Universitaria,""
23,2002,88.045,113.073,201.118,Rilevazione Istruzione Universitaria,""
24,2001,74.623,97.183,171.806,Rilevazione Istruzione Universitaria,""

Scrivere una applicazione che:
– crea un array di dizionari che contiene tutti i valori
– sostituire (nel programma, non nel csv) le chiavi con le seguenti label: “id, anno, maschi, femmine, totale, fonte, note)
– indicare l’anno col maggior numero di laureati maschi, l’anno con maggior numero di laureate femmine, l’anno col maggior numero di laureati totali, la somma totale di laureati maschi, femmine e totali.