Je cherche à créer un ensemble de tableaux créés dynamiquement et stockés dans un objet. le résultat serait quelque chose de similaire à ce ...stocker un tableau dynamique de valeurs à l'intérieur d'un objet en boucle dans une instruction for
object.array0.length = 5, object.array1.length = 4, etc
le nom du tableau serait généré à partir d'une boucle basée sur une valeur numérique déclarée ailleurs dans l'application.
Voici le code que j'ai ...
var obj = {};
var weekNum = 4;
for(i=0; i < weekNum.length;i++) {
obj['week'+i] = [];
obj['week'+i].push(day);
console.log('days stored in week0: '+obj.week0.length);
}
Ce qui semble se produire est que obj['week'+i]
ne se rend pas compte qu'il est un tableau, et la commande de poussée ne semble pas être assez pour le faire penser. Donc, comme une valeur résultante de obj.week0.length
est toujours 1 avec la valeur réelle qui vient d'être remplacée à chaque fois par opposition à la matrice en cours d'incrémentation. Le paramètre day
dans le code ci-dessus serait transmis à partir d'une autre fonction représentant un jour choisi (lundi, mardi, etc) ... Cependant, la séquence et le nombre de jours passés pourraient différer, mais ne dépassera jamais 5 (mf).
Au début, je pensais que cela avait résolu mon problème, mais en y repensant je me rends compte qu'il est très proche de la solution - cependant, une solution n'est pas (encore) ... à toutes fins utiles ... cette boucle for est contenue à l'intérieur d'une fonction ... 'jour' représente une valeur différente chaque fois que la fonction est appelée, mais ce n'est qu'une valeur à la fois. Je voudrais, chaque fois que la fonction est appelée et un nouveau paramètre pour 'day' est passé, que le tableau est ensuite incrémenté et mis à jour avec la nouvelle valeur. Merci. – Jason
@Jason - Le problème est que vous redéclarez la propriété weekN en tant que tableau chaque fois que vous appelez la fonction et que la boucle est exécutée. Sans voir plus de code, je ne fais que lancer des fléchettes à l'aveugle, mais en supposant que le tableau obj soit accessible à votre fonction d'une façon ou d'une autre, vous ne créez un nouveau tableau que s'il n'existe pas déjà. mise à jour de la réponse – Anurag
obj ['week' + i] = obj ['week' + i] || []; Cela a résolu mon problème, j'ai pu continuer à résoudre d'autres domaines du code et maintenant tout fonctionne. Merci! – Jason