Bonjour,
J'ai un problème avec un tableau multi-dimensionnel.
Mon tableau est déclaré d'abord dans la partie principale du programme :
1 2 3 4 5 6 7 8
| var population = 20;
var numGenes = 183;
// déclaration du génome et remplissage par valeurs à zéro
//var genome = new Array();
var genome=new Array(population);
for (var i=0; i <population; i++) {
genome[i]=new Array(183)
} ; |
(Notez l'ancienne manière de le créer qui reste en commentaire).
Ce tableau est rempli de valeurs aléatoires un peu plus loin :
1 2 3 4 5 6 7 8
| function init() {
for (var a = 0; a < population; a++) {
genome[a] = [];
for (b = 0 ; b < numGenes; b++) {
genome[a][b] = Math.random();
}
};
}; |
Jusque là le code fonctionne parfaitement.
PROBLEME : par après, j'essaie de copier ce tableau dans un autre (notez que je passe une partie du code, qui n'a aucun lien avec le tableau dont il est question). Avant même d'en arriver là, je veux simplement afficher le contenu d'une seule dimension via la commande post() :
1 2 3 4 5
| selectedGenome = [];
//Copie du génome des individus sélectionnés dans le nouveau génome
for (var a = 0; a < population; a++) {
post("genome[a] : "+genome[a]+"\n");
}; |
Ce code plante le logiciel alors que le code suivant fonctionne :
post("genome[a][0] : "+genome[a][0]+"\n")
On dirait que je ne peux plus faire référence à une dimension complète de mon tableau, ni au tableau complet. En effet, le code suivant plante aussi le logiciel :
post("Genome : "+genome+"\n")
Que dois-je changer dans le programme pour que cela fonctionne?
Quels tests puis-je élaborer pour trouver la faille?
Merci d'avance pour toute aide.
Si cela peut s'avérer nécessaire, je précise que j'utilise JavaScript dans un contexte particulier, c'est-à-dire que le script ne tourne pas dans un logiciel de navigation Web mais dans un logiciel de création multimédia appelé Max. Cela étant, le Javascript employé dans Max respecte complètement la norme JS (version 1.5 je crois), seul son D.O.M. est différent, et il me semble d'autre part que pour le code dont il est question ici cela ne change rien.
Partager