Cita:  
					Iniciado por IsaBelM  
  otra manera de hacerlo con array es con literales
  Cita:  var arr =[1= ['color'], 6 = ['color'], ...]
       ¿Y cómo se interpreta ese código? 
 
   Cita:  
					Iniciado por IsaBelM  
  este último es en respuesta a tu último post
 
entonces usa split()
    Lo de usar bien los índices y después parsear el valor no es mala idea, pero al usar un string los números van a desaparecer. O sea: 
 Cita:  var array = ['1:foo', '3:baz', 'string:bar'];
    Al hacer un split el índice se quedará en la posición 0, pero no sabrá si es un número o un key, así que debería hacer un isNaN o algo similar para comprobar que está tratando con número, lo veo engorroso.  
 Cita:  
					Iniciado por Artificium  
  Voy a ponertelo más clarito para que lo veas:
  
Código:
 for (indice in array) {
   var valor = array[indice];
}
  A ver como la ves ahora.
   Los for in no son una buena idea en arrays, son muy lentos. Para eso mejor hacerlo con un objeto, la velocidad viene a ser la misma, pero es más versátil y lógico. 
Yo creo que la mejor solución sería olvidarse de los keys y usar sólo índices numéricos, y en cada iteración comprobar si ese elemento del array existe.
Saludos (: