L'oggetto Dictionary di Javascript

Corso jQuery
Creare applicazioni client-side col Framework jQuery

Scritto da Luca Ruggiero nella sezione Javascript

Introduzione

Javascript annovera tra le sue librerie di funzioni la collezione Scripting.Dictionary che genera una nuova istanza dell'oggetto Dictionary. Simile ad un Array(), questo oggetto dispone di alcune proprietà e metodi che permettono di creare piccole ma utili applicazioni come un Dizionario, un motore di ricerca, o con un po di fantasia anche altro.

Proprietà e Metodi

Esaminiamo le proprietà ed i metodi di questo oggetto.

Elemento Tipo Descrizione
Add() M Aggiunge una chiave ed una voce all'oggetto Dictionary
Es. oggetto.Add(chiave, voce);
Count P Restituisce il numero di oggetto Dictionary
Es. oggetto.Count;
Exists() M Booleano, restituisce true o false se la chiave esiste o meno
Es. oggetto.Exists(chiave);
Item P Imposta e/o restituisce una voce associata alla chiave specificata di un oggetto Dictionary; lavora sia in lettura che in scrittura
Es. oggetto.Item(chiave) = "voce";
Items() M Restituisce una matrice contenente tutte le voci incluse in un oggetto Dictionary
Es. oggetto.Items();
Key P Imposta una chiave in un oggetto Dictionary
Es. oggetto.Key(chiave) = "chiave";
Keys() M Restituisce una matrice contenente tutte le chiavi esistenti in un oggetto Dictionary
Es. oggetto.Keys();
Remove() M Rimuove una coppia (chiave, voce) da un oggetto Dictionary
Es. oggetto.Remove(chiave);
RemoveAll() M Rimuove tutte le coppie (chiave, voce) da un oggetto Dictionary
Es. oggetto.RemoveAll();

In questo Articolo vedremo un esempio che vede impiegati i principali metodi e proprietà tra quelli citati. Continuate a leggere.

Un esempio pratico

Veniamo ad un esempio pratico. Il primo che mi viene in mente potrebbe esserer l'alfabeto: utilizzeremo quindi come chiave l'elenco delle lettere dalla A alla Z e come voce una qualsiasi parola, ad esempio una città italiana che inizia con la lettera corrispondente. Creiamo quindi una spacie di motore di ricerca che

Ecco il codice commentato:
function Controlla()
{
    // Creo l'oggetto Dictionary
    var dizionario = new ActiveXObject("Scripting.Dictionary");

    // Memorizzo i dati del dizionario
    var indici = new Array("A","B","C");
    var parola = new Array("Ancona","Bari","Como");

    // recupero il valore dal modulo
    var lettera = document.modulo.lettera.value.toUpperCase();

    // Aggiungo tutti i dati al dizionario
    for (var i=0; i<indici.length; i++)
    {
         dizionario.Add(indici[i], parola[i]);
    }

    // Controllo che il modulo di ricerca non sia vuoto
    if (lettera == "" || lettera == "undefined" || lettera.charAt(0) == " ")
    {
        alert("Inserisci una lettera da ricercare");
    }
    // Verifico l'esistenza del dato e do un esito alla ricerca
    else if (dizionario.Exists(lettera))
    {
        alert(lettera + " esiste");
    }
    else
    {
        alert(lettera + " NON esiste");
    }
}
In questo caso avremo un risultato affermativo solo se verranno inserite le lettere a, b, c, A, B, C sia in maiuscolo che in minuscolo, grazie al controllo effettuato dalla funzione toUpperCase().

Di seguito il codice Html del modulo:
<form name="modulo">
    <input type="text" name="lettera" maxlength="1">
    <input type="button" value="Controlla" onClick="Controlla()">
</form>
Conclusioni

Mi auguro che questo breve articolo non induca il lettore a pensare di avere un cosi potente strumento tra le mani... certo ha la sua comodità, ma il suo supporto è limitato; consiglio quindi di usarlo con parsimonia, ed in ogni caso di gestire l'eventuale errore dato dal mancato supporto della libreria col costrutto try... catch.

I più cliccati della sezione Javascript

:: jQuery Validation: validazione di un form con jQuery (106.555)

:: Breve guida a jQuery (96.818)

:: Le espressioni regolari in Javascript (84.690)

:: Gestione delle stringhe in Javascript (74.154)

:: Stampare una pagina col Dhtml (42.639)

:: Inserire in automatico lo slash nel formato data gg/mm/aaaa (39.785)

:: Menu orizzontale dinamico in Dhtml (36.961)

:: Gli Array in Javascript (35.690)

:: Temporizzazioni Javascript (31.211)

:: Istruzion condizionali in Javascript: if e switch (28.629)

IN EVIDENZA
DOWNLOAD