In aceasta lectie vor fi prezentate metode mai avansate de lucru cu Array.

1. Parcurgere Array

Pentru a parcurge un Array se folosesc oricare din instructiunile repetitive: for, while sau for each ... in (vedeti lectiile despre Instructiuni Repetitive).
Parcurgerea unui Array da posibilitatea aplicarii unei actiuni fiecarui element din el.
- Iata cate un exemplu cu fiecare.

Cu for()

var mAr:Array = [2, 6, 8];

// Se parcurge Array "mAr" cu "for()"
for(var i:int=0; i<mAr.length; i++)
{
  // Se dubleaza valoarea elementului curent
  mAr[i] *= 2;
}

// Verificare valori ale elementelor din "mAr" dupa parcurgere
trace(mAr);          // 4,12,16
- "var i:int=0;" seteaza indicele de la care incepe parcurgerea (se poate da si alta valoare in afara de 0, de la care element sa inceapa).
- "i<mAr.length;" face ca parcurgerea sa fie realizata pana la ultimul element.
- "i++" incrementeaza indicele cu o unitate, pt. fiecare parcurgere.
- In cadrul buclei "for()" (intre acolade) pot fi scrise orice instructiuni si operatii pt. elementul curent parcurs; acesta putand fi accesat cu indicele de ordine "i".

Cu while()

var mAr:Array = [2, 6, 8];

var i:int = 0;          // Se defineste indicele de ordine pt. parcurgere
// Se parcurge Array "mAr" cu "while()"
while(i<mAr.length)
{
  // Se dubleaza valoarea elementului curent
  mAr[i] *= 2;
  i++;          // Incrementeaza indicele ca sa treaca la urmatorul element
}

// Verificare valori ale elementelor din "mAr" dupa parcurgere
trace(mAr);          // 4,12,16

Cu for each ... in

var mAr:Array = [2, 6, 8];

// Se parcurge Array "mAr" cu "for each ... in"
for each(var elm:Number in mAr)
{
  // Se dubleaza valoarea elementului curent, care e stocat in "elm"
  elm *= 2;
  // Pot fi executate comenzi cu "elm"
}

// Verificare valori ale elementelor din "mAr" dupa parcurgere
trace(mAr);          // 2,4,8
- Observati ca, fata de celelalte instructiuni repetitive, "for each ... in" doar preia si foloseste intr-o variabila (aici "elm") valoarea elementului curent parcurs din Array (aici "mAr"), dar nu influenteaza elementele din matrice. Dupa cum se vede la verificarea cu "trace(mAr)", valorile din Array sunt neschimbate.

2. Array multi-dimensional

Un Array poate contine ca element un alt Array. In acest caz avem de-a face cu o matrice multi-dimensionala.
Sa luam un exemplu practic :

// Se creaza un Array cu 3 elemente (al treile fiind tot un Array)
var mAr:Array = ['tutoriale', 'marplo.net', [88, 'flash']];

// Verificare elemente totale din 'mAr', si al treilea
trace(mAr);          // tutoriale,marplo.net,88,flash
trace(mAr[2]);       // 88,flash
- Al treilea element ([88, 'flash']) fiind un Array in cel principal, se mai numeste si "array imbricat".

Accesare elemente din Array-ul imbricat

Pentru a accesa un element din matricea imbricata se foloseste urmatoarea formula:
                numeAr[i1][i2]
- Unde, "i1" este indicile de ordine a matricei imbricate in Array-ul principal, iar "i2" este indicele elementului din matricea interna.
Mai usor de inteles din urmatorul exemplu:
// Se creaza un Array cu 3 elemente (al treile fiind tot un Array)
var mAr:Array = ['tutoriale', 'marplo.net', [88, 'flash']];

// Se adauga intr-o variabila al doilea element din Array-ul imbricat
var test:* = mAr[2][1];

trace(test);          // Verificare valoare lui "test" (flash)

3. Array asociativ

Un Array asociativ este un Array in care indicii elementelor nu sunt numere intregi consecutive, ci siruri (cuvinte). Acestea nu mai sunt create automat, in ordine de catre program, ci trebuie definiti (asociati) special pentru fiecare element.
Sintaxa generala este:

- Unde "numeAr" este numele matricei.
- 'key1', 'key2' sunt indicii (cheile) asociate fiecarui element (pot fi scrisi si intre ghilimele duble, iar daca sunt numere, nu mai se adauga ghilimele).
- "val1", "val2" sunt valorile elementelor respective (pot fi: siruri, numere, variabile, expresii sau alt Array).
- Se pot adauga oricate elemente in Array, cu formula numeAr['key'] = valoare;

• Accesarea elementelor dintr-un Array asociativ se face la fel ca la cel cu indexi numere consecutive (denumit si "secvential"), cu sintaxa: numeAr['key']
• Acest tip de Array (asociativ) este de fapt si Obiect, deoarece valorile elementelor din el pot fi accesate si folosind formula: "numeAr.key", aici "key" fiind folosita ca o proprietate.
Iata un exemplu in care sunt aplicate ambele metode de accesare:
// Array asociativ cu 3 elemente
var mAr:Array = new Array();
 mAr['site'] = 'marplo.net';
 mAr['curs'] = 'Adobe Flash';
 mAr['tutoriale'] = 'JavaScript';

// Apelare cu metoda tip Array a primului element
trace(mAr['site']);         // marplo.net

// Apelarea altui element, cu metoda tip Obiect
trace(mAr.curs);           // Adobe Flash

Daca se aplica "trace(array_asociativ)", fara vreo cheie, nu va afisa nimic.

4. Parcurgere Array asociativ

Un Array asociativ se parcurge cu instructiunile "for ... in" sau "for each ... in".
Iata un exemplu pentru fiecare.

- Cu for ... in

// Array asociativ cu 3 elemente
var mAr:Array = new Array();
 mAr['site'] = 'marplo.net';
 mAr['curs'] = 'Adobe Flash';
 mAr['tutoriale'] = 'JavaScript';

// Se parcurge matricea "mAr" cu "for ... in"
for(var key:String in mAr)
{
  // Se afiseaza in Output Cheia si valoarea fiecarui element parcurs
  trace('Cheie='+ key+ ' - valoare='+ mAr[key]);

  // Pot fi executate orice comenzi si operati cu "key" si "mAr[key]"
}
- "key" e o variabila in care programul retine cheia (indexul) elementului curent parcurs (poate fi orice nume de variabila) din Array-ul "mAr".
In Output afiseaza:
Cheie=site - valoare=marplo.net
Cheie=tutoriale - valoare=JavaScript
Cheie=curs - valoare=Adobe Flash

- Cu for each... in

// Array asociativ cu 3 elemente
var mAr:Array = new Array();
 mAr['site'] = 'marplo.net';
 mAr['curs'] = 'Adobe Flash';
 mAr['tutoriale'] = 'JavaScript';

// Se parcurge matricea "mAr" cu "for each ... in"
for each(var elm in mAr)
{
  // Se afiseaza in Output valoarea fiecarui element parcurs
  trace('valE - '+ elm);

  // Pot fi executate orice comenzi si operati cu "elm"
}
- Observati diferenta fata de "for ... in". Cu "for each ... in" nu se obtine cheia elementului; variabila declarata intre paranteze (aici "elm") stocheaza insusi elementul parcurs.
In Output afiseaza:
valE - Adobe Flash
valE - marplo.net
valE - JavaScript

- Fisiere FLA cu exemplele din aceasta lectie pot fi descarcate de la:
  1. Array multi-dimensional
  2. Array asociativ
  3. Parcurgere Array asociativ

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag defineste zona de click intr-o harta creata dintr-o imagine?
<map> <img> <area>
<img src="image.jpg" usemap="#map1">
<map name="map1">
  <area shape="rect" coords="9, 120, 56, 149" href="#">
  <area shape="rect" coords="100, 200, 156, 249" href="#">
</map>
Ce proprietate CSS indica ce sa se intample cand continutul unui element depaseste dimensiunile lui?
display overflow position
#id {
  overflow: auto;
}
Clic pe evenimentul care este declansat cand mouse-ul e deasupra unui obiect.
onclick onmouseover onmouseout
document.getElementById("id").onmouseover = function(){
  document.write("Sa ai Viata Buna");
}
Indicati variabila PHP ce contine datele adaugate in adresa URL, dupa caracterul "?".
$_SESSION $_GET $_POST
if(isset($_GET["id"])) {
  echo $_GET["id"];
}
Clic pe pronumele reflexiv care e potrivit in propozitia: "Marc is the boy ... won the prize".
who which whoever
Marc is the boy who won the prize.
- Marc e baiatul care a castigat premiul.
Clic pe pronumele reflexiv care e potrivit in propozitia: "Voy a ver al pintor de ... les hablé ayer".
que quien cuyo
Voy a ver al pintor de quien les hablé ayer.
- Ma duc sa vad pictorul despre care ti-am vorbit ieri.
Array - Avansati

Last accessed pages

  1. Numerale, Numere in limba engleza - Numerals (24264)
  2. Articolul din limba engleza - The article (26406)
  3. Gramatica limbii engleze - Prezentare Generala (105532)
  4. Prefixele dis-, mis-, un-. The DIS, MIS and UN prefixes (4104)
  5. Pronumele in limba engleza - Pronouns (18504)

Popular pages this month

  1. Prezentul simplu si continuu - Present Tense Simple and Continuous (3706)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (3277)
  3. Gramatica limbii engleze - Prezentare Generala (2797)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (2396)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (2005)