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
Ce atribut indica faptul ca un camp de formular trebuie completat?
required="required" autofocus="autofocus" placeholder="text"
<input type="text" name="name1" required="required" />
Ce metoda CSS misoreaza sau mareste dimensiunile unui element (inclusiv continutul)?
translate() scale() skew()
#some_id:hover {
  transform: scale(2, 1.5);
  -ms-transform: scale(2, 1.5);    /* IE 9 */
  -moz-transform: scale(2, 1.5);   /* Firefox */
}
Click pe metoda obiectului Date care returneaza ziua din luna.
setDate() getMonth() getDate()
var rightnow = new Date();
var day = rightnow.getDate();
alert(day);
Ce functie este folosita pentru a incarca un fisier pe server?
is_file() move_uploaded_file() fopen()
if(move_uploaded_file($_FILES["field_name"]["tmp_name"], "dir/file_name")) {
  echo "Fisierul a fost incarcat";
}
Cum se spune in engleza expresia: "Ploua cu galeata"?
rain cats and dogs rain buckets quiet rain
In Bucharest it`s raining cats and dogs.
- In Bucuresti ploua cu galeata.
Cum se spune in spaniola expresia: "Ploua cu galeata"?
llover cubo llover a cántaros lluvia tranquila
En Madrid está lloviendo a cántaros.
- In Madrid ploua cu galeata.
Array - Avansati

Last accessed pages

  1. Numerale, Numere in limba engleza - Numerals (30915)
  2. Blog si Cugetari Personale (32903)
  3. Am o functie pe care Dumnezeu vrea să o ocup (5)
  4. Proverbe, expresii si zicatori (9651)
  5. Poezii pentru copii, in engleza (16462)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1006)
  2. Curs HTML gratuit Tutoriale HTML5 (725)
  3. Curs si Tutoriale JavaScript (661)
  4. Curs si Tutoriale Ajax (617)
  5. Curs CSS Online Tutoriale CSS3 (605)