Matrizes multidimensionais

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

As matrizes multidimensionais contêm outras matrizes como elementos. Por exemplo, considere uma lista de tarefas armazenada como uma matriz indexada de strings:

var tasks:Array = ["wash dishes", "take out trash"];

Se desejar armazenar uma lista separada de tarefas para cada dia da semana, você poderá criar uma matriz multidimensional com um elemento para cada dia da semana. Cada elemento contém uma matriz indexada, similar à matriz tarefas , que armazena a lista de tarefas. É possível usar qualquer combinação de matrizes indexadas ou associativas em matrizes multidimensionais. Os exemplos das seções a seguir usam duas matrizes indexadas ou uma matriz associativa de matrizes indexadas. Se desejar, experimente outras combinações para praticar.

Duas matrizes indexadas

Ao usar duas matrizes indexadas, você pode visualizar o resultado como uma tabela ou uma planilha. Os elementos da primeira matriz representam as linhas da tabela, enquanto os elementos da segunda matriz representam as colunas.

Por exemplo, a seguinte matriz multidimensional usa duas matrizes indexadas para rastrear as listas de tarefas de cada dia da semana. A primeira matriz, masterTaskList , é criada com o construtor da classe Array. Cada elemento da matriz representa um dia da semana; o índice 0 representa segunda-feira e o índice 6 representa domingo. Esses elementos podem ser considerados linhas da tabela. Você pode criar a lista de tarefas de cada dia atribuindo um literal de matriz a cada um dos sete elementos que podem ser criados na matriz masterTaskList . Os literais de matriz representam as colunas da tabela.

var masterTaskList:Array = new Array(); 
masterTaskList[0] = ["wash dishes", "take out trash"]; 
masterTaskList[1] = ["wash dishes", "pay bills"]; 
masterTaskList[2] = ["wash dishes", "dentist", "wash dog"]; 
masterTaskList[3] = ["wash dishes"]; 
masterTaskList[4] = ["wash dishes", "clean house"]; 
masterTaskList[5] = ["wash dishes", "wash car", "pay rent"]; 
masterTaskList[6] = ["mow lawn", "fix chair"];

Você pode acessar itens individuais em qualquer lista de tarefas, usando o operador de acesso à matriz ( [] ). O primeiro conjunto de colchetes representa o dia da semana e o segundo representa a lista de tarefas desse dia. Por exemplo, para recuperar a segunda tarefa da lista de quarta-feira, use primeiro o índice 2 para quarta-feira e, em seguida, use o índice 1 para a segunda tarefa da lista.

trace(masterTaskList[2][1]); // output: dentist

Para recuperar a primeira tarefa da lista de domingo, use o índice 6 para domingo e o índice 0 para a primeira tarefa da lista.

trace(masterTaskList[6][0]); // output: mow lawn

Matriz associativa com uma matriz indexada

Para facilitar o acesso a matrizes individuais, você pode usar uma matriz associativa para os dias da semana e uma matriz indexada para as listas de tarefas. A matriz associativa permite usar a sintaxe de ponto ao fazer referência a um dia da semana específico, mas aumenta o tempo de processamento de tempo de execução para acessar cada elemento da matriz associativa. O exemplo a seguir usa uma matriz associativa como base de uma lista de tarefas, com um par de chave e valor para cada dia da semana:

var masterTaskList:Object = new Object(); 
masterTaskList["Monday"] = ["wash dishes", "take out trash"]; 
masterTaskList["Tuesday"] = ["wash dishes", "pay bills"]; 
masterTaskList["Wednesday"] = ["wash dishes", "dentist", "wash dog"]; 
masterTaskList["Thursday"] = ["wash dishes"]; 
masterTaskList["Friday"] = ["wash dishes", "clean house"]; 
masterTaskList["Saturday"] = ["wash dishes", "wash car", "pay rent"]; 
masterTaskList["Sunday"] = ["mow lawn", "fix chair"];

A sintaxe de ponto deixa o código mais legível, evitando vários conjuntos de colchetes.

trace(masterTaskList.Wednesday[1]); // output: dentist 
trace(masterTaskList.Sunday[0]);// output: mow lawn

É possível percorrer a lista de tarefas usando um loop for..in , mas é necessário usar o operador de acesso à matriz ( [] em vez da sintaxe de ponto para acessar o valor associado a cada chave. Como masterTaskList é uma matriz associativa, os elementos não são recuperados necessariamente na ordem esperada, como mostra o exemplo a seguir:

for (var day:String in masterTaskList) 
{ 
    trace(day + ": " + masterTaskList[day]) 
} 
/* output: 
Sunday: mow lawn,fix chair 
Wednesday: wash dishes,dentist,wash dog 
Friday: wash dishes,clean house 
Thursday: wash dishes 
Monday: wash dishes,take out trash 
Saturday: wash dishes,wash car,pay rent 
Tuesday: wash dishes,pay bills 
*/