JavaScript: Arrays
Carlos Santos

LabMM 3 - NTC - DeCA - UA

Aula 12, 24-10-2013
Lembram-se do Nelo e da Idália?

“Resmas de gajas”
Se o Nelo tiver que armazenar o nome da esposa?
var esposa = “Idália”;!
!

• Limitações:
• uma variável só permite armazen...
Como é que o Nelo pode armazenar o nome das
resmas de gajas?
var gaja1 = “Asdrubal”;!
var gaja2 = “Porfírio”;!
...!
var ga...
Arrays em Javascript
• Um array é uma estrutura de dados complexa onde podemos armazenar
múltiplas unidades de informação ...
Arrays: estrutura
Identificador

meuArray
0

Índice

“nome”

1

4324

2

1.54324

3

false

Elementos
Arrays: operações base: declaração
• Declaração de um array vazio (sem elementos)

• var nomeArray = new Array();!
• var n...
Arrays: operações base: escrita
• Escrita

• nomeArray[índice] = valor;!
• Exemplos
• arrayLetras[1] = “x”;!

“a”

!

“x”
...
Arrays: operações base: escrita
• Exemplos
• arrayLetras[5] = “z”;

“a”
“x”
“c”
“d”
undefined

“z”
Arrays: operações base: leitura
• Escrita

• var elemento = nomeArray[índice];!
• Exemplos
• var letraEscolhida = arrayLet...
De regresso às resmas de gajas do Nelo
• Criar um array para ajudar o Nelo a guardar o nome das gajas atuais:
Asdrubal, Po...
De volta às resmas de gajas do Nelo
• O Nelo é muito esquecido e por isso temos de gerar uma mensagem de
alerta que diga:
...
Sistematizar o acesso a um array
var msg = “Nelo, mulher, as tuas gajas são: “;!
msg = msg + gajasNelo[0] + “, “;!
msg = m...
Estrutura de repetição: for-in
variável que no decorrer da
execução do ciclo vai tomar
todos os valores dos índices
do obj...
Estrutura de repetição: for-in (exemplo)
var msg = “Nelo, mulher, as tuas gajas são: “;!
for (cont = 0; cont <= gajasNelo....
Informação e métodos úteis num Array()
• Quantos elementos tem o array neste momento?

• Como adicionar um elemento no fina...
Objetos
no dia-a-dia
Um objeto é uma “coisa”
definida por um conjunto de:
propriedades
- modelo

- espaçoDeArmazenamento

!...
Objetos em programação (versão light)
• são também uma “coisa” definida por um conjunto de propriedades e
métodos que podem...
Operador new
• Instanciação de um array

• var nomeArray = new Array();

classe Array()

objeto nomeArray

!

!

proprieda...
JavaScript: objeto Array: propriedades
• length: devolve o número atual de elementos de um array

// Exemplo: Versão alter...
JavaScript: objeto Array: métodos
• Os mais comuns... mas existem mais!
Método
concat()
join()
pop()
push()
reverse()

Des...
Array: métodos: concat()
var parents = ["Jani", "Tove"];!
var children = ["Cecilie", "Lone"];!
var family = parents.concat...
Array: métodos: concat()
var parents = ["Jani", "Tove"];!
var children = ["Cecilie", "Lone"];!
var family = parents.concat...
Array: métodos: join()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.join() + "<br />");!
do...
Array: métodos: join()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.join() + "<br />");!
do...
Array: métodos: pop()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.pop() + "<br />");!
docu...
Array: métodos: pop()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.pop() + "<br />");!
docu...
Array: métodos: push()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.push("Kiwi") + "<br />"...
Array: métodos: push()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.push("Kiwi") + "<br />"...
Array: métodos: reverse()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.reverse());!
!

// ?...
Array: métodos: reverse()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.reverse());!
!

// M...
Array: métodos: shift()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.shift() + "<br />");!
...
Array: métodos: shift()
var fruits = ["Banana", "Orange", "Apple", "Mango"];!
document.write(fruits.shift() + "<br />");!
...
Upcoming SlideShare
Loading in …5
×

T12_LM3: Arrays (2013-2014)

690 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
690
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

T12_LM3: Arrays (2013-2014)

  1. 1. JavaScript: Arrays Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 12, 24-10-2013
  2. 2. Lembram-se do Nelo e da Idália? “Resmas de gajas”
  3. 3. Se o Nelo tiver que armazenar o nome da esposa? var esposa = “Idália”;! ! • Limitações: • uma variável só permite armazenar uma unidade de informação; • por unidade de informação entende-se, um conjunto de dados que, por si só, constituem uma unidade lógica. Por exemplo: • “Herman José” é uma string cujo conteúdo pode ser considerado uma unidade de informação; • “Herman José, Nilton, Nuno Markl, Bruno Nogueira” também é uma string mas o seu conteúdo não é uma unidade de informação.
  4. 4. Como é que o Nelo pode armazenar o nome das resmas de gajas? var gaja1 = “Asdrubal”;! var gaja2 = “Porfírio”;! ...! var gajaN = “Zacarias”; // Não é uma solução adequada!! • Problemas com esta solução: • o acesso sistemático à informação pode ser muito complexo; • adicionar e/ou eliminar elementos implica alterações na própria estrutura de dados do algoritmo; • por vezes, esta solução pode parecer a mais simples mas, na maioria dos casos, acaba por implicar problemas complexos.
  5. 5. Arrays em Javascript • Um array é uma estrutura de dados complexa onde podemos armazenar múltiplas unidades de informação de um modo lógico e acessível. • um array é identificado por um nome/identificador com características semelhantes às de uma variável; • cada unidade de informação, um elemento, é armazenada num espaço próprio, acessível através de um índice, que indica a respetiva posição no array; • os elementos podem ser de qualquer tipo de dados, inclusivamente tipos de dados complexos; • o número de elementos de um array é gerido dinamicamente, permitindo aumentar ou diminuir a sua capacidade durante a execução do algoritmo.
  6. 6. Arrays: estrutura Identificador meuArray 0 Índice “nome” 1 4324 2 1.54324 3 false Elementos
  7. 7. Arrays: operações base: declaração • Declaração de um array vazio (sem elementos) • var nomeArray = new Array();! • var nomeArray = [];! • var nomeArray = new Array(5); //declara um array inicialmente dimensionado para 5 elementos! • Declaração de um array com elementos iniciais • var arrayLetras = new Array(“a”, ”b”, ”c”);! “a” 5 • var arrayNumeros = [5, 23, 13, 12]; “b” 23 “c” 13 12
  8. 8. Arrays: operações base: escrita • Escrita • nomeArray[índice] = valor;! • Exemplos • arrayLetras[1] = “x”;! “a” ! “x” ! “c” • arrayLetras[3] = “d”; “a” “x” “c” “d”
  9. 9. Arrays: operações base: escrita • Exemplos • arrayLetras[5] = “z”; “a” “x” “c” “d” undefined “z”
  10. 10. Arrays: operações base: leitura • Escrita • var elemento = nomeArray[índice];! • Exemplos • var letraEscolhida = arrayLetras[1]; //??! • alert(arrayLetras[0]); //??! • arrayLetras[1] = arrayLetras[2]; //?? “a” “x” “c” “d” undefined “z”
  11. 11. De regresso às resmas de gajas do Nelo • Criar um array para ajudar o Nelo a guardar o nome das gajas atuais: Asdrubal, Porfirio e Zacarias: var gajasNelo = new Array(“Asdrubal”,“Porfirio”,“Zacarias”);! 0 “Porfirio” 2 ! “Asdrubal” 1 ! “Zacarias” • O Nelo chateou-se com o Asdrubal e arranjou logo o “Jair” para o substituir. Pelo meio ainda ficou com o “Marcão”: gajasNelo[0] = “Jair”;! gajasNelo[3] = “Marcão”; 0 “Jair” 1 “Porfirio” 2 “Zacarias” 3 “Marcão”
  12. 12. De volta às resmas de gajas do Nelo • O Nelo é muito esquecido e por isso temos de gerar uma mensagem de alerta que diga: • “Nelo, mulher, as tuas gajas são: ..., ..., ..., ...” ! var msg = “Nelo, mulher, as tuas gajas são: “;! msg = msg + gajasNelo[0] + “, “;! 0 “Jair” msg = msg + gajasNelo[1] + “, “;! 1 “Porfirio” msg = msg + gajasNelo[2] + “, “;! 2 “Zacarias” msg = msg + gajasNelo[3];! 3 “Marcão” alert (msg); //??!
  13. 13. Sistematizar o acesso a um array var msg = “Nelo, mulher, as tuas gajas são: “;! msg = msg + gajasNelo[0] + “, “;! msg = msg + gajasNelo[1] + “, “;! msg = msg + gajasNelo[2] + “, “;! msg = msg + gajasNelo[3];! alert (msg); //??! ! // Versão com ciclo for! var msg = “Nelo, mulher, as tuas gajas são: “;! for (cont = 0; cont <=3; cont++) {! msg = msg + gajasNelo[cont] + “, “;! }! alert (msg); // Será que o resultado final é exatamente igual?
  14. 14. 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! }!
  15. 15. 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);
  16. 16. Informação e métodos úteis num Array() • Quantos elementos tem o array neste momento? • Como adicionar um elemento no final de um array? • Como adicionar um elemento no início de um array? • Como apagar um elemento do array e não deixar um espaço vazio? • ...
  17. 17. Objetos no dia-a-dia Um objeto é uma “coisa” definida por um conjunto de: propriedades - modelo - espaçoDeArmazenamento ! métodos/funções - ligar(nr. telefone) - play(album)
  18. 18. Objetos em programação (versão light) • são também uma “coisa” definida por um conjunto de propriedades e métodos que podem ser reutilizados livremente na execução de um programa. • as características de um objeto são definidas pela sua classe, que podem ser: • built-in • user defined • a instanciação de um novo objeto é conseguida através da invocação do operador new.
  19. 19. Operador new • Instanciação de um array • var nomeArray = new Array(); classe Array() objeto nomeArray ! ! propriedades Array new propriedades Array ! ! métodos Array métodos Array
  20. 20. JavaScript: objeto Array: propriedades • length: devolve o número atual de elementos de um array // Exemplo: Versão alterada com ciclo for! var msg = “Nelo, mulher, as tuas gajas são: “;! for (cont = 0; cont <= gajasNelo.length - 1; cont++) {! msg = msg + gajasNelo[cont] + “, “;! }! alert (msg); 0 “Jair” 1 “Porfirio” 2 “Zacarias” 3 “Marcão” gajasNelo.length -> 4
  21. 21. JavaScript: objeto Array: métodos • Os mais comuns... mas existem mais! Método concat() join() pop() push() reverse() Descrição Joins two or more arrays, and returns a copy of the joined arrays Joins all elements of an array into a string Removes the last element of an array, and returns that element Adds new elements to the end of an array, and returns the new length Reverses the order of the elements in an array shift() Removes the first element of an array, and returns that element slice() Selects a part of an array, and returns the new array sort() Sorts the elements of an array splice Adds/Removes elements from an array toString() unshift() Converts an array to a string, and returns the result Adds new elements to the beginning of an array, and returns the new length http://www.w3schools.com/jsref/jsref_obj_array.asp
  22. 22. Array: métodos: concat() var parents = ["Jani", "Tove"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(children);! document.write(family);! // ??! ! var parents = ["Jani", "Tove"];! var brothers = ["Stale", "Kai Jim", "Borge"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(brothers, children);! document.write(family);! // ?? Os exemplos desta secção são retirados do w3schools
  23. 23. Array: métodos: concat() var parents = ["Jani", "Tove"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(children);! document.write(family);! // Jani,Tove,Cecilie,Lone! ! var parents = ["Jani", "Tove"];! var brothers = ["Stale", "Kai Jim", "Borge"];! var children = ["Cecilie", "Lone"];! var family = parents.concat(brothers, children);! document.write(family);! // Jani,Tove,Stale,Kai Jim,Borge,Cecilie,Lone
  24. 24. Array: métodos: join() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.join() + "<br />");! document.write(fruits.join("+") + "<br />");! document.write(fruits.join(" and "));! ! // ??! // ??! // ??
  25. 25. Array: métodos: join() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.join() + "<br />");! document.write(fruits.join("+") + "<br />");! document.write(fruits.join(" and "));! ! // Banana,Orange,Apple,Mango! // Banana+Orange+Apple+Mango! // Banana and Orange and Apple and Mango
  26. 26. Array: métodos: pop() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.pop() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.pop() + "<br />");! document.write(fruits);! ! // ??! // ??! // ??! // ??
  27. 27. Array: métodos: pop() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.pop() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.pop() + "<br />");! document.write(fruits);! ! // Mango! // Banana,Orange,Apple! // Apple! // Banana,Orange
  28. 28. Array: métodos: push() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.push("Kiwi") + "<br />");! document.write(fruits.push("Lemon","Pineapple")+"<br />");! document.write(fruits);! ! // ??! // ??! // ??
  29. 29. Array: métodos: push() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.push("Kiwi") + "<br />");! document.write(fruits.push("Lemon","Pineapple")+"<br />");! document.write(fruits);! ! // 5! // 7! // Banana,Orange,Apple,Mango,Kiwi,Lemon,Pineapple
  30. 30. Array: métodos: reverse() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.reverse());! ! // ??
  31. 31. Array: métodos: reverse() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.reverse());! ! // Mango,Apple,Orange,Banana
  32. 32. Array: métodos: shift() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.shift() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.shift() + "<br />");! document.write(fruits);! ! // ??! // ??! // ??! // ??
  33. 33. Array: métodos: shift() var fruits = ["Banana", "Orange", "Apple", "Mango"];! document.write(fruits.shift() + "<br />");! document.write(fruits + "<br />");! document.write(fruits.shift() + "<br />");! document.write(fruits);! ! // Banana! // Orange,Apple,Mango! // Orange! // Apple,Mango!

×