J'ai un tableau d'element disjoint.
Genre :
a[1000]=5;
a[2300]=10;
Et bien entendu, a[1001] n' a jamais été défini.
Y a t il un moyen efficace de le parcourir, en récuperant les indices,
si je ne connais pas ces indices a l'avance ?
C'est a dire, autrement qu'en faisant une boucle de 1 a 1 000 000, et
en regardant ce qui n'est pas undefined.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
J'ai un tableau d'element disjoint. Genre : a[1000]=5; a[2300]; Et bien entendu, a[1001] n' a jamais été défini.
Y a t il un moyen efficace de le parcourir, en récuperant les indices, si je ne connais pas ces indices a l'avance ? C'est a dire, autrement qu'en faisant une boucle de 1 a 1 000 000, et en regardant ce qui n'est pas undefined.
Oui. À priori « for (index in a) » devrait boucler deux fois, une fois avec index = 1000, l'autre avec index = 2300.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
J'ai un tableau d'element disjoint.
Genre :
a[1000]=5;
a[2300];
Et bien entendu, a[1001] n' a jamais été défini.
Y a t il un moyen efficace de le parcourir, en récuperant les indices,
si je ne connais pas ces indices a l'avance ?
C'est a dire, autrement qu'en faisant une boucle de 1 a 1 000 000, et
en regardant ce qui n'est pas undefined.
Oui. À priori « for (index in a) » devrait boucler deux fois, une fois
avec index = 1000, l'autre avec index = 2300.
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
J'ai un tableau d'element disjoint. Genre : a[1000]=5; a[2300]; Et bien entendu, a[1001] n' a jamais été défini.
Y a t il un moyen efficace de le parcourir, en récuperant les indices, si je ne connais pas ces indices a l'avance ? C'est a dire, autrement qu'en faisant une boucle de 1 a 1 000 000, et en regardant ce qui n'est pas undefined.
Oui. À priori « for (index in a) » devrait boucler deux fois, une fois avec index = 1000, l'autre avec index = 2300.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
YD
J'ai un tableau d'element disjoint. Genre : a[1000]=5; a[2300]; Et bien entendu, a[1001] n' a jamais été défini.
Y a t il un moyen efficace de le parcourir, en récuperant les indices, si je ne connais pas ces indices a l'avance ? C'est a dire, autrement qu'en faisant une boucle de 1 a 1 000 000, et en regardant ce qui n'est pas undefined.
Déjà tu n'es pas obligé d'aller à 1 000 000 qui n'est pas assez grand - valeur max. 2^32. Tu peux te limiter à a.length qui est plus grand de 1 que le plus grand des indices utilisés. Et encore plus rapide :
for (var o in a) /*traitement sur o*/;
retournera dans o les valeurs successives des indices définis (dans le jargon js on parlerait plutôt de propriétés).
Attention, si tu définis un "indice" qui n'est pas une valeur numérique, la propriété est créée et retournée. Pour reprendre ton exemple, j'ajoute a["truc"]="machin", alors for (var o in a) retournera successivement ces chaînes (String) : "1000", "2300", "truc" !
-- Y.D.
J'ai un tableau d'element disjoint.
Genre :
a[1000]=5;
a[2300];
Et bien entendu, a[1001] n' a jamais été défini.
Y a t il un moyen efficace de le parcourir, en récuperant les indices,
si je ne connais pas ces indices a l'avance ?
C'est a dire, autrement qu'en faisant une boucle de 1 a 1 000 000, et
en regardant ce qui n'est pas undefined.
Déjà tu n'es pas obligé d'aller à 1 000 000 qui n'est pas assez grand -
valeur max. 2^32. Tu peux te limiter à a.length qui est plus grand de 1
que le plus grand des indices utilisés. Et encore plus rapide :
for (var o in a) /*traitement sur o*/;
retournera dans o les valeurs successives des indices définis (dans le
jargon js on parlerait plutôt de propriétés).
Attention, si tu définis un "indice" qui n'est pas une valeur numérique,
la propriété est créée et retournée. Pour reprendre ton exemple,
j'ajoute a["truc"]="machin", alors
for (var o in a) retournera successivement ces chaînes (String) :
"1000", "2300", "truc" !
J'ai un tableau d'element disjoint. Genre : a[1000]=5; a[2300]; Et bien entendu, a[1001] n' a jamais été défini.
Y a t il un moyen efficace de le parcourir, en récuperant les indices, si je ne connais pas ces indices a l'avance ? C'est a dire, autrement qu'en faisant une boucle de 1 a 1 000 000, et en regardant ce qui n'est pas undefined.
Déjà tu n'es pas obligé d'aller à 1 000 000 qui n'est pas assez grand - valeur max. 2^32. Tu peux te limiter à a.length qui est plus grand de 1 que le plus grand des indices utilisés. Et encore plus rapide :
for (var o in a) /*traitement sur o*/;
retournera dans o les valeurs successives des indices définis (dans le jargon js on parlerait plutôt de propriétés).
Attention, si tu définis un "indice" qui n'est pas une valeur numérique, la propriété est créée et retournée. Pour reprendre ton exemple, j'ajoute a["truc"]="machin", alors for (var o in a) retournera successivement ces chaînes (String) : "1000", "2300", "truc" !
-- Y.D.
Guillaume JAY
On Thu, 17 Nov 2005 00:07:36 +0100, YD wrote:
for (var o in a) /*traitement sur o*/;
Merci bcp, toi et Olivier.
Je m'attendait a quelque chose comme ca, mais je marche sur des oeufs, en js.
Guillaume
On Thu, 17 Nov 2005 00:07:36 +0100, YD <No-spam@thank.you.invalid>
wrote:
for (var o in a) /*traitement sur o*/;
Merci bcp, toi et Olivier.
Je m'attendait a quelque chose comme ca, mais je marche sur des oeufs,
en js.
Je m'attendait a quelque chose comme ca, mais je marche sur des oeufs, en js.
Guillaume
Olivier Miakinen
for (var o in a) /*traitement sur o*/;
Tiens, j'avais oublié le « var ». Ça marche sans mais c'est plus propre avec.
for (var o in a) retournera successivement ces chaînes (String) : "1000", "2300", "truc" !
Absolument. J'avais oublié de préciser que ce sont des chaînes, et que les valeurs retournées sont donc "1000" et "2300" plutôt que 1000 et 2300 comme je l'avais écrit.
Règle numéro 1 : toujours lire les réponses de YD.
Règle numéro 2 : si une réponse contredit celle de YD, toujours croire celle de YD.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
for (var o in a) /*traitement sur o*/;
Tiens, j'avais oublié le « var ». Ça marche sans mais c'est plus propre
avec.
for (var o in a) retournera successivement ces chaînes (String) :
"1000", "2300", "truc" !
Absolument. J'avais oublié de préciser que ce sont des chaînes, et que
les valeurs retournées sont donc "1000" et "2300" plutôt que 1000 et
2300 comme je l'avais écrit.
Règle numéro 1 : toujours lire les réponses de YD.
Règle numéro 2 : si une réponse contredit celle de YD, toujours croire
celle de YD.
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Tiens, j'avais oublié le « var ». Ça marche sans mais c'est plus propre avec.
for (var o in a) retournera successivement ces chaînes (String) : "1000", "2300", "truc" !
Absolument. J'avais oublié de préciser que ce sont des chaînes, et que les valeurs retournées sont donc "1000" et "2300" plutôt que 1000 et 2300 comme je l'avais écrit.
Règle numéro 1 : toujours lire les réponses de YD.
Règle numéro 2 : si une réponse contredit celle de YD, toujours croire celle de YD.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)