for in estigui habilitat: recórrer arrays o propietats d’objectes. Diferència entre for i for in. Exemples (CU01135E)

La sintaxi a emprar per recórrer les propietats d’un objecte és la següent:

a

for (nombreIndice in nombreObjeto) {

… execució de sentències …

}

a

Sobre objectes parlarem més endavant. En el cas concret dels arrays podem escriure típicament el següent:

a

for (índex in nombreDelArray) {

realitzar operacions sobre nombreDelArray …

}

a

En aquest codi veiem com podem fer servir recórrer un array amb un for normal o, de forma equivalent, amb un for in :

a

function ejemploForIn () {

var dada =;

var msgForNormal = ‘ ‘;

var msgForIn =’ ‘;

// for normal

for (var i = 0; i <dato.length; i ++) {msgForNormal = msgForNormal + dada + ‘-‘; }

// For in

for (i in dada) {msgForIn = msgForIn + dada + ‘-‘; }

alert ( ‘msgForNormal conté’ + msgForNormal + ‘i msgForIn conté’ + msgForIn);

} a

Incorpora el codi dins d’una pàgina web i comprova com el resultat que obtens és el següent: msgForNormal conté a 2 – 6 – 5 – 1 – 18 – 44 – i msgForIn conté a 2 – 6 – 5 – 1 – 18 – 44 –

És a dir, hem recorregut l’array amb un for normal i amb un for in. És millor fer servir un for tradicional o for in? Les dues formes resulten relativament equivalents i útils, encara que en alguns casos específics pot interessar més fer servir una forma o una altra, i en alguns casos específics no s’obtenen els mateixos resultats fent servir les dues formes. Nosaltres ens inclinem preferentment per l’ús de l’for tradicional, però en determinades circumstàncies i per a alguns usos especials més avançats (dels quals parlarem quan estudiem els objectes en JavaScript i el recorregut de les propietats d’un objecte) pot ser interessant utilitzar for – in .

Una qüestió a tenir en compte quan es fan usos més avançats de forma – in és que l’ordre en què s’obtenen els elements de la col·lecció no té per què coincidir amb l’ordre dels índexs. En l’exemple anterior teníem una matriu var dada =; i l’ordre esperat de recorregut és a 2 – 6 – 5 – 1 – 18 – 44. Però el for in no necessàriament respecta aquest ordre, podria fer un recorregut en un ordre aparentment aleatori com 18 – 6 – 44 – 1 – 5. Amb els arrays probablement no passi això, però amb un altre tipus de col·leccions sí que pot ocórrer. Per tant a l’usar un for – in podem estar segurs que es van a recórrer tots els elements en la col·lecció, però no podem assegurar que aquest recorregut hagi de seguir un ordre determinat. Si l’ordre és important, serà millor fer servir un for tradicional o un altre tipus de control.

Una altra consideració a tenir en compte és el rendiment o velocitat d’execució esperable quan utilitzem 1 for – in respecte a què obtenim quan fem servir un for tradicional. En general, si es tracta d’un array petit les diferències poden resultar inapreciables. No obstant això, amb arrays de moltes dades l’execució és molt més ràpida servir un for tradicional.

EXERCICI

1) Genera un script que demani cinc números a l’usuari que utilitza un bucle for normal (fa servir prompt per demanar les dades i converteix-a valor numèric posteriorment). Emmagatzema els números introduïts per l’usuari en un array. A continuació usant un for in que recorri l’array, mostra un missatge informant de l’resultat de multiplicar cada un dels números per 3. Exemple:

Es demanaran a l’usuari 5 nombres, suposem que introdueix 1, 3, 9, 10 i 7

A continuació es mostrarà el missatge:

Multipliquem per 3 els números introduïts: 1 * 3 = 3, 3 * 3 = 9, 9 * 3 = 27, 10 * 3 = 30 i 7 * 3 = 21.

Per comprovar si les teves respostes són correctes pots consultar als fòrums aprenderaprogramar.com.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *