Gente, no confundamos los tantos.
 
Los arrays aceptan posiciones NUMERICAS, caso contrario estaremos asignando propiedades como en cualquier otro objeto en JS.    
Código Javascript
:
Ver original- var myArray = []; 
-   
- myArray[0] = 'a';  
- myArray['b'] = 'c'; 
-   
- // Recorremos el Array 
- // Muestra un unico item: 
- // 0 -> a 
- for(var i = 0; i < myArray.length; i++) { 
-     console.log(i, '->' , myArray[i]); 
- } 
-   
- // Recorremos el OBJETO 
- // Muestra ambos items, el item del array y la property: 
- // 0 -> a 
- // b -> c 
- for(var p in myArray) {     
-     console.log(p, '->' , myArray[p]); 
- } 
@piojoso 
Lo que estás haciendo es básicamente mal usar los arrays, como te dijo @IsaBelM tenes que usar un objeto (y consecuentemente recorrerlo con for-in). 
No es demasiado complicado el tema de colecciones en JS: 
Listas -> arrays
Mapas -> objetos