J'ai un tableau créé avec ce code :
var widthRange = new Array();
widthRange[46] = { min:0, max:52 };
widthRange[66] = { min:52, max:70 };
widthRange[90] = { min:70, max:94 };
Je veux obtenir chacune des valeurs 46, 66, 90 dans une boucle. J'ai essayé for (var key in widthRange)
mais cela me donne tout un tas de propriétés supplémentaires (je suppose que ce sont des fonctions sur l'objet). Je ne peux pas utiliser une boucle for normale puisque les valeurs ne sont pas séquentielles.
10 votes
On dirait que vous avez des données qui, bien qu'elles aient des clés numériques, ne sont pas réellement des données de tableau. J'envisagerais d'utiliser un objet ordinaire ici.
0 votes
@Quentin C'est ce qu'on appelle un tableau clairsemé. En termes de performances, il est préférable d'utiliser un tableau plutôt qu'un objet. De plus, du point de vue des performances, la meilleure réponse n'est même pas listée :
Array.prototype.forEach
. AppelerObject.keys
sur un tableau est peu performant car les navigateurs ne sont pas optimisés pour cela.for(var key in array)
est mauvais parce qu'il parcourt le prototype et met en chaîne chaque clé numérique qu'il rencontre (la conversion des doubles en base 10 est très lente).forEach
a été conçu exactement pour l'itération de tableaux épars et offrira à votre code d'excellentes performances par rapport aux autres solutions.