< Home
Stampa

Esercizi di manipolazione dati in Javascript

Sommario

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.