1. JavaScript: For-in e arrays^n
Carlos Santos
LabMM 3 - NTC - DeCA - UA
Aula 12, 03-11-2011
2. Estrutura de repetição: for-in
variável que no decorrer da
execução do ciclo vai tomar
todos os valores dos índices
do objeto array que se pretende iterar
todos os elementos
for ( index in nomeArray )
{
// código a executar
}
3. Estrutura de repetição: for-in (exemplo)
var msg = “Nelo, mulher, as tuas gajas são: “;
for (cont = 0; cont <= gajasNelo.length - 1; cont++) {
msg = msg + gajasNelo[cont] + “, “;
}
alert (msg);
// versão com for-in
var gajasNelo = new Array("Jair", "Marcolino", "Marco");
for (var indexGaja in gajasNelo) {
msg = msg + gajasNelo[indexGaja] + ", ";
}
alert (msg);
4. Estuturas de dados ainda mais complexas :)
• E se um elemento de um array não for na realidade um elemento de tipo
simples?
• Exemplo: O Nelo não pode guardar só o nome das suas gajas. Ele precisa
guardar o número de telemóvel e o email (um dia ele saberá para que
serve...)!
var gajasNelo = new Array();
gajasNelo[0] = “Asdrubal, 961111111, asdrubal@gmail.com”;
gajasNelo[1] = “Porfirio, 931111111, porfirio@sapo.pt”;
gajasNelo[2] = “Zacarias, 911111111, zacarias@hotmail.com”;
5. Problemas com solução anterior?
• Elementos não são unidades de informação
• Acesso a unidades de informação não pode ser realizado de uma forma
simples e sistemática
• “Voltamos ao problema de misturar alhos com bugalhos!”
• Então como resolver?
• Pista para nova solução: “Cada elemento de um array pode ter associado
um tipo de dados complexo”
9. Arrays bidimensionais: declaração
var gajasNelo = new Array();
gajasNelo[0] = new Array("Asdrubal","961111111","asdrubal@gmail.com");
gajasNelo[1] = new Array("Porfirio","931111111","porfirio@sapo.pt");
gajasNelo[2] = new Array("Zacarias","911111111","zacarias@hotmail.com");
// Outra possibilidade
var gajasNelo = new Array();
gajasNelo[0] = ["Asdrubal","961111111","asdrubal@gmail.com"];
gajasNelo[1] = ["Porfirio","931111111","porfirio@sapo.pt"];
gajasNelo[2] = ["Zacarias","911111111","zacarias@hotmail.com"];
10. Arrays bidimensionais: declaração
// E ainda outra possibilidade
var gajasNelo = new Array();
gajasNelo[0] = new Array();
gajasNelo[0][0] = "Asdrubal";
gajasNelo[0][1] = "961111111";
gajasNelo[0][2] = "asdrubal@gmail.com";
gajasNelo[1] = new Array();
gajasNelo[1][0] = "Porfirio";
...
12. Arrays multidimensionais
• Os princípios aplicados para a criação de um array bidimensional são válidos
para um array de qualquer dimensão;
• num array bidimensional, cada elemento pode ser também um array,
resultando num array tridimensional;
• e esta lógica pode continuar a ser aplicada...
• Raramente se recorre a arrays com mais do que 3 dimensões porque
começam a ser demasiado complexos de visualizar e de difícil manutenção.
13. Arrays bidimensionais: exemplo
var tabuada = new Array();
for (var linha=1; linha<=10;linha++){
tabuada[linha]=new Array();
for (var coluna = 1; coluna<=10;coluna++){
tabuada[linha][coluna]=linha*coluna;
}
}
alert(tabuada[5][5]); // ??
alert(tabuada[0][5]); // ??