Skip to main content
eLearner.app

Fine del Corso JavaScript

Riepilogo e sfida finale

Complimenti: hai attraversato gli 8 moduli del Corso JavaScript — dalle prime let e if fino a async/await, Promise.all e ai pattern funzionali con map, filter, reduce. Qui sotto la mappa di tutto quello che padroneggi e una sfida finale in tre tappe che li mette al lavoro insieme.

01 · Basi

  • let / const
  • tipi primitivi
  • operatori
  • if / else

02 · Stringhe e numeri

  • template literals
  • metodi stringa
  • Math
  • conversioni

03 · Collezioni

  • array
  • oggetti
  • destructuring + spread
  • iterare

04 · Funzioni

  • dichiarazioni
  • arrow
  • default / rest
  • closures

05 · Controllo del flusso

  • for / while
  • for…of / for…in
  • break / continue
  • try / catch

06 · Array funzionali

  • map / filter
  • reduce
  • find / some / every
  • sort

07 · Asincrono

  • Promise
  • async / await
  • fetch (mock)
  • errori async

08 · Pratica

  • moduli ESM
  • parser CSV
  • validator
  • scheduling

La sfida finale, in tre tappe

Immagina un'app che riceve dati dal server in formato CSV, li valida e li aggrega per presentarli all'utente. Costruisci i tre pezzi che fanno il lavoro: il parser, l'aggregatore e il caricatore parallelo. Ogni tappa combina concetti dei moduli che hai studiato — nessuna lezione nuova.

1 · Parser CSV → oggetti tipizzati

Trasforma una stringa CSV in array di oggetti, convertendo le colonne numeriche in numeri. Modulo 3 (oggetti) + Modulo 6 (map) + Modulo 8 (CSV).

Exercise#js.boss.e1
Attempts: 0Loading…

Definisci parseRecords(csv, colonneNumeriche) dove colonneNumeriche è un array di nomi di colonna da convertire con Number(). Ritorna l'array di oggetti.

Loading editor…
Show hint

Set delle colonne numeriche, split per righe, mappa ogni riga in oggetto convertendo i campi giusti con Number().

Solution available after 3 attempts

2 · Aggrega per chiave con reduce

Raggruppa i record per una colonna e somma una colonna numerica. Modulo 6 (reduce) + Modulo 3 (oggetti).

Exercise#js.boss.e2
Attempts: 0Loading…

Definisci sommaPerChiave(records, chiave, valore) che ritorna un oggetto { gruppo: somma }. Esempio: sommaPerChiave([{citta:'Roma',n:1},{citta:'Roma',n:2},{citta:'Milano',n:5}], 'citta', 'n') -> { Roma: 3, Milano: 5 }.

Loading editor…
Show hint

reduce con accumulatore oggetto: acc[r[chiave]] = (acc[r[chiave]] || 0) + r[valore].

Solution available after 3 attempts

3 · Carica più endpoint in parallelo

Recupera in parallelo più CSV, combina i record, e calcola la somma totale di una colonna. Modulo 7 (Promise.all + fetch) + le funzioni delle tappe precedenti.

Exercise#js.boss.e3
Attempts: 0Loading…

Definisci async caricaTotale(urls, colonna) che fa fetch+text() di ogni URL in parallelo, parsa ognuno con parseRecords (con [colonna] come numerico), concatena tutti i record e ritorna la somma di obj[colonna] su tutti. Ridefinisci parseRecords come nella prima sfida.

Loading editor…
Show hint

Promise.all su urls.map(fetch -> text), parseRecords con la colonna come numerica, flatMap, poi reduce somma.

Solution available after 3 attempts

Cheatsheet stampabile

Una pagina con tutta la sintassi essenziale di JavaScript, pronta da tenere sotto mano mentre programmi.

Apri il cheatsheet

E adesso?

Il modo migliore per consolidare è pratica libera. Apri un editor (o il Playground JS quando lo sbloccherai) e prova a riscrivere a memoria gli esercizi più complessi, oppure cimentati con piccoli script da riga di comando: un contatore di parole su un file, un client HTTP minimale, un piccolo bot.