Oggetto Array di JScript
Un oggetto Array è una variabile che raggruppa più dati correlati. Ogni porzione di dati della matrice è contraddistinta da un numero univoco, denominato indice. Per accedere ai dati memorizzati nella matrice, l'identificatore e l'indice della matrice vengono combinati con l'operatore di indice "[]", come in theMonths[0].
Creazione di una matrice
Per creare una nuova matrice, utilizzare l'operatore new e il costruttore Array. Nell'esempio riportato di seguito, il costruttore della matrice viene utilizzato per costruire una matrice di lunghezza 12. Quindi vengono immessi i dati nella matrice.
var theMonths = new Array(12);
theMonths[0] = "Jan";
theMonths[1] = "Feb";
theMonths[2] = "Mar";
theMonths[3] = "Apr";
theMonths[4] = "May";
theMonths[5] = "Jun";
theMonths[6] = "Jul";
theMonths[7] = "Aug";
theMonths[8] = "Sep";
theMonths[9] = "Oct";
theMonths[10] = "Nov";
theMonths[11] = "Dec";
Quando si crea una matrice utilizzando la parola chiave Array, viene inclusa una proprietà length in cui è registrato il numero di voci. Se non si specifica un numero, la lunghezza verrà impostata su zero e la matrice non conterrà voci. Se invece si specifica un numero, la lunghezza verrà impostata in base a tale numero. Se si specifica più di un parametro, i parametri verranno utilizzati come voci della matrice. Il numero di parametri viene inoltre assegnato alla proprietà length, come nell'esempio che segue equivalente a quello sopra riportato.
var theMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
I valori letterali di matrice costituiscono un altro metodo di immissione dei dati in una matrice. Per ulteriori informazioni vedere Dati Array.
L'oggetto Array memorizza matrici sparse. Vale a dire che, se una matrice contiene tre elementi numerati 0, 1 e 2, potrà contenere anche un elemento 50, senza che sia necessaria la presenza degli elementi compresi tra 3 e 49. JScript modifica automaticamente il valore della proprietà length quando si aggiungono elementi a un oggetto Array. In JScript, poiché gli indici di matrice iniziano sempre con 0 e non con 1, la proprietà length è sempre maggiore di un'unità dell'indice massimo della matrice.
Utilizzo delle proprietà expando delle matrici
Gli oggetti Array, come qualsiasi altro oggetto basato sull'oggetto Object di JScript, supportano le proprietà expando. Le proprietà expando sono nuove proprietà che è possibile aggiungere o rimuovere dinamicamente da una matrice, come gli indici di matrice. A differenza degli indici di matrice, però, che devono essere numeri interi, le proprietà expando sono stringhe. Inoltre, l'aggiunta o l'eliminazione di proprietà expando non modifica la proprietà length.
Esempio:
// Initialize an array with three elements.
var myArray = new Array("Hello", 42, new Date(2000,1,1));
print(myArray.length); // Prints 3.
// Add some expando properties. They will not change the length.
myArray.expando = "JScript";
myArray["another Expando"] = "Windows";
print(myArray.length); // Still prints 3.
Matrici tipizzate
Un altro modo rapido per creare la matrice theMonths considerata sopra consiste nel creare una matrice tipizzata o nativa. In questo caso, sarà una matrice di stringhe:
var theMonths : String[] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
Gli elementi delle matrici tipizzate sono più rapidamente accessibili rispetto agli elementi degli oggetti Array di JScript. Le matrici tipizzate sono compatibili con le matrici disponibili in altri linguaggi .NET Framework e garantiscono l'indipendenza dai tipi.
Per quanto gli oggetti Array di JScript siano molto flessibili e adatti all'utilizzo per elenchi, code, stack e così via, le matrici native sono più appropriate per la memorizzazione di elementi a dimensione fissa dello stesso tipo. In generale, a meno che non siano richieste specifiche caratteristiche dell'oggetto Array, quali il ridimensionamento dinamico o altro, è preferibile l'utilizzo delle matrici tipizzate.
Sulle matrici tipizzate è possibile chiamare tutti i metodi Array di JScript non distruttivi, vale a dire che non modificano la lunghezza.