Ricerca in un array di oggetti
Qui trovate tutti i codici utilizzati per l'esercizio. Sono tutti ampiamente spiegati e commentati. Fate attenzione perchè i collegamenti ai file dipendono da dove sono collocati; Struttura che ho utilizzato io:
- regioni-italiane
- css
- index.html
- index.js
- regioni.js
index.html
Normalissima pagina HTML basata su bootstrap
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Regioni Italiane</title>
<link rel="stylesheet" href="css/bootstrap.css">
</head>
<body>
<div class="jumbotron jumbotron-fluid py-4 bg-dark text-light">
<div class="container">
<h1 class="display-4">Regioni</h1>
<p>Esercizio su for e gli array</p>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-12 col-sm mb-2">
<input type="text" class="form-control" id="input-ricerca"
placeholder="testo da ricercare" />
</div>
<div class="col col-sm-auto">
<button type="button" class="btn btn-success w-100" id="btn-regione">
Regione
</button>
</div>
<div class="col col-sm-auto">
<button type="button" class="btn btn-info w-100" id="btn-sigla">
Sigla
</button>
</div>
<div class="col col-sm-auto">
<button type="button" class="btn btn-dark w-100" id="btn-capoluogo">
Capoluogo
</button>
</div>
</div>
</div>
<div class="container">
<h2>Risultati</h2>
<p id="risultato"></p>
</div>
<script src="regioni.js"></script>
<script src="index.js"></script>
</body>
</html>
index.js
/*
Le variabili contengono il riferimento agli
elementi dell'interfaccia che devo utilizzare
*/
// Campo di input (input#input-ricerca)
var userInput = document.getElementById('input-ricerca');
// Bottone sigla (button#btn-sigla)
var bottoneSigla = document.getElementById('btn-sigla');
// Risultato della ricerca (p#risultato)
var output = document.getElementById('risultato');
/* =====================================================
GESTORE EVENTO CLICK
=====================================================*/
bottoneSigla.addEventListener('click', function() {
// Assegno a q la stringa inserita dall'utente convertendola in maiuscolo
var q = userInput.value.toUpperCase();
// Con un ciclo fo scorro tutte le regioni
for (var i = 0; i < regioni.length; i++){
var regione = regioni[i];
// Per ogni regione estraggo le proprietĂ province e capoluoghi
var sigle = regione.province;
var caps = regione.capoluoghi;
// con un ulteriore ciclo for esamino tutte le sigle dell'array sigle
for(var k = 0; k < sigle.length; k++) {
// Se trovo quella inserita dall'utente compongo il messaggio
// lo metto in p#output e interrompo il ciclo
if (sigle[k] == q) {
output.innerHTML = "La sigla " + q + " corrisponde al capoluogo " +
caps[k] + " (" + regione.nome + "),";
return;
}
}
}
})
regioni.js
L'array di oggetti su cui sono effettuate le ricerche:
var regioni =
[
{
"nome": "Abruzzo",
"capoluoghi": ["Chieti", "L'Aquila", "Pescara", "Teramo"],
"province":["CH","AQ","PE","TE"]
},
{
"nome": "Basilicata",
"capoluoghi": ["Matera", "Potenza"],
"province":["MT","PZ"]
},
{
"nome": "Calabria",
"capoluoghi": ["Catanzaro", "Cosenza", "Crotone", "Reggio Calabria", "Vibo Valentia"],
"province":["CZ","CS","KR","RC","VV"]
},
{
"nome": "Campania",
"capoluoghi": ["Avellino", "Benevento", "Caserta", "Napoli", "Salerno"],
"province":["AV","BN","CE","NA","SA"]
},
{
"nome": "Emilia-Romagna",
"capoluoghi": ["Bologna", "Ferrara", "Forlì-Cesena", "Modena", "Parma", "Piacenza", "Ravenna", "Reggio Emilia", "Rimini"],
"province":["BO","FE","FC","MO","PR","PC","RA","RE","RN"]
},
{
"nome": "Friuli-Venezia Giulia",
"capoluoghi": ["Gorizia", "Pordenone", "Trieste", "Udine"],
"province":["GO","PN","TS","UD"]
},
{
"nome": "Lazio",
"capoluoghi": ["Frosinone", "Latina", "Rieti", "Roma", "Viterbo"],
"province":["FR","LT","RI","RM","VT"]
},
{
"nome": "Liguria",
"capoluoghi": ["Genova", "Imperia", "La Spezia", "Savona"],
"province":["GE","IM","SP","SV"]
},
{
"nome": "Lombardia",
"capoluoghi": ["Bergamo", "Brescia", "Como", "Cremona", "Lecco", "Lodi", "Mantova", "Milano", "Monza e Brianza", "Pavia", "Sondrio", "Varese"],
"province":["BG","BS","CO","CR","LC","LO","MN","MI","MB","PV","SO","VA"]
},
{
"nome": "Marche",
"capoluoghi": ["Ancona", "Ascoli Piceno", "Fermo", "Macerata", "Pesaro e Urbino"],
"province":["AN","AP","FM","MC","PU"]
},
{
"nome": "Molise",
"capoluoghi": ["Campobasso", "Isernia"],
"province":["CB","IS"]
},
{
"nome": "Piemonte",
"capoluoghi": ["Alessandria", "Asti", "Biella", "Cuneo", "Novara", "Torino", "Verbano Cusio Ossola", "Vercelli"],
"province":["AL","AT","BI","CN","NO","TO","VB","VC"]
},
{
"nome": "Puglia",
"capoluoghi": ["Bari", "Barletta-Andria-Trani", "Brindisi", "Lecce", "Foggia", "Taranto"],
"province":["BA","BT","BR","LE","FG","TA"]
},
{
"nome": "Sardegna",
"capoluoghi": ["Cagliari", "Carbonia-Iglesias", "Medio Campidano", "Nuoro", "Ogliastra", "Olbia-Tempio", "Oristano", "Sassari"],
"province":["CA","CI","VS","NU","OG","OT","OR","SS"]
},
{
"nome": "Sicilia",
"capoluoghi": ["Agrigento", "Caltanissetta", "Catania", "Enna", "Messina", "Palermo", "Ragusa", "Siracusa", "Trapani"],
"province":["AG","CL","CT","EN","ME","PA","RG","SR","TP"]
},
{
"nome": "Toscana",
"capoluoghi": ["Arezzo", "Firenze", "Grosseto", "Livorno", "Lucca", "Massa e Carrara", "Pisa", "Pistoia", "Prato", "Siena"],
"province":["AR","FI","GR","LI","LU","MS","PI","PT","PO","SI"]
},
{
"nome": "Trentino-Alto Adige",
"capoluoghi": ["Bolzano", "Trento"],
"province":["BZ","TN"]
},
{
"nome": "Umbria",
"capoluoghi": ["Perugia", "Terni"],
"province":["PG","TR"]
},
{
"nome": "Valle d'Aosta",
"capoluoghi": ["Aosta"],
"province":["AO"]
},
{
"nome": "Veneto",
"capoluoghi": ["Belluno", "Padova", "Rovigo", "Treviso", "Venezia", "Verona", "Vicenza"],
"province":["BL","PD","RO","TV","VE","VR","VI"]
}
];