Declaración de matrices
Al igual que ocurre con todos los demás datos de JScript, las variables pueden almacenar matrices. Las anotaciones de tipo pueden especificar que una variable debe contener un objeto de matriz o una matriz con tipo, pero no pueden proporcionar una matriz inicial. Para almacenar una matriz en una variable, debe declarar la matriz y asignarla a la variable.
Al declarar un objeto de matriz JScript se crea un nuevo objeto Array, mientras que al declarar una matriz con tipo se reserva una sección de memoria lo suficientemente grande para almacenar todos los elementos de la matriz. Ambos tipos de matrices se pueden declarar utilizando el operador new para crear de forma explícita una nueva matriz o utilizando un literal de matriz.
Declaración de matrices con el operador new
Para declarar un objeto Array JScript, puede utilizar el operador new con el constructor Array. Puesto que es posible agregar dinámicamente miembros a una matriz JScript, no es necesario especificar un tamaño inicial para la matriz. En este ejemplo, a1 se asigna a una matriz de longitud cero.
var a1 = new Array();
Para asignar una longitud inicial a la matriz creada con el constructor Array, pase un entero al constructor. La longitud de la matriz debe ser cero o un número positivo. En la siguiente línea de código se asigna una matriz de longitud 10 a a2.
var a2 = new Array(10);
Si se pasan varios parámetros o un único parámetro no numérico al constructor Array, la matriz resultante contendrá todos los parámetros como elementos de la matriz. Por ejemplo, en la siguiente línea de código se crea una matriz en la que el elemento 0 es el número 10, el elemento 1 es la cadena "Hello" y el elemento 2 es la fecha actual.
var a3 = new Array(10, "Hello", Date());
El operador new puede declarar también matrices con tipo. Dado que las matrices con tipo no pueden aceptar de forma dinámica elementos agregados, en la declaración se debe especificar el tamaño de la matriz. En el constructor de las matrices con tipo se utilizan corchetes en lugar de paréntesis para incluir el tamaño de la matriz. Por ejemplo, en la siguiente línea de código se declara una matriz de cinco enteros.
var i1 : int[] = new int[5];
El operador new puede declarar también matrices multidimensionales. En el siguiente ejemplo se declara una matriz de enteros de tres por cuatro por cinco.
var i2 : int[,,] = new int[3,4,5];
Cuando se declaran matrices de matrices, la matriz base debe aparecer antes que las submatrices, y éstas no pueden declararse al mismo tiempo. De este modo, se obtiene mayor flexibilidad a la hora de determinar el tamaño de las submatrices. En este ejemplo, la primera submatriz tiene una longitud de 1, la segunda de 2, y así sucesivamente.
// First, declare a typed array of type int[], and initialize it.
var i3 : int[][] = new (int[])[4];
// Second, initialize the subarrays.
for(var i=0; i<4; i++)
i3[i] = new int[i+1];
Declaración de matrices con literales de matriz
Otra forma de declarar e inicializar matrices simultáneamente es utilizar literales de matriz. Un literal de matriz representa una Array JScript. Dado que las matrices JScript interactúan con las matrices con tipo, se pueden utilizar también literales para inicializar matrices con tipo. Para obtener más información, vea Datos de matriz.
Los literales de matriz pueden inicializar de forma sencilla matrices unidimensionales. Tenga en cuenta que el compilador intentará convertir los datos del literal de matriz en el tipo correcto cuando se asignen a una matriz con tipo. En este ejemplo, se asigna una matriz literal a una matriz JScript y a una matriz con tipo.
var al1 : Array = [1,2,"3"];
var il1 : int[] = [1,2,"3"];
Los literales de matriz pueden inicializar también matrices de matrices. En el ejemplo siguiente, una matriz de dos matrices de enteros inicializa la matriz JScript y la matriz con tipo.
var al1 : Array = [[1,2,3],[4,5,6]];
var il1 : int[][] = [[1,2,3],[4,5,6]];
Los literales de matriz no pueden inicializar matrices con tipo multidimensionales.