bitacora.lavaramano.md    archivos    feed    acerca de

Bucles for ( in ), for each ( in ) y JSON

Ademas de la palabra each, hay otra diferencia entre estos dos statements.
Que en resumen es que el ultimo (for each) itera sobre los valores y no sobre los nombres de un objecto. Pero siendo un poco mas verbose, dejenme presentarles a los personajes de este nuevo capitulo de Jason:

El Objeto

    var jason_movies = { one: { name: 'Friday the 13th', year: '1980', survivor: 'Alice' },   
                         two: { name: 'Friday the 13th Part II', year: '1981', survivor: 'Ginny' },   
                         three: { name: 'Friday the 13th Part III', year: '1982', survivor: 'Chris' }  
                         }  

El statement “for in”

En este caso, film sera igual al nombre del objeto en cuestion, por lo tanto en la primer posicion sera ‘one’, en la segunda ‘two’ y asi.
Teniendo en cuenta que film es un string, no lo podemos utilizar como un objeto, de lo contrario simplemente fallaria ya que, en este caso en particular, no hay un objeto llamado film dentro de json_movies
Ejemplo:

    for( var film in jason_movies ){  
      alert( "The movie " + jason_movies[film].name. + " was released in "+ jason_movies[film].year +" and the only survivor was "+ jason_movies[film].survivor );  
    }  

El statement “for each in”

Mientras tanto, en este caso film sera igual al objeto en cuestion, por lo que este valdra { name: […], year: […], survivor: […] } en cada posicion.
Asi tambien, por el otro lado, si podemos utilizarlo como un objeto …basicamente porque es uno.
Ejemplo:

    for each ( var film in jason_movies ){  
      alert( "The movie " + film.name + " was released in "+ film.year +" and the only survivor was "+ film.survivor );  
    }