In aceasta lectie vor fi prezentate metode mai avansate de lucru cu 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.
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).
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
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.
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".
// 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)
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:
// 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.
Un Array asociativ se parcurge cu instructiunile "for ... in" sau "for each ... in".
Iata un exemplu pentru fiecare.
// 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".
// 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.
<div>Web Programming and Development</div>
h2 { text-decoration: underline; }
function someFunction() { alert("CoursesWeb.net"); } setTimeout("someFunction()", 2000);
$food =["fruits" =>["banana", "mar"), "veggie" =>["ceapa", "rosie")); $nr_food = count($food, 1); echo $nr_food; // 6
The child will haven't played by Sunday. - Copilul nu s-ar fi jucat pana duminica.
Él no habrá contado el cuento. - El nu ar fi spus povestea.