JeuWeb - Crée ton jeu par navigateur
[Annulé][Javascript] tableau length - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Annulé][Javascript] tableau length (/showthread.php?tid=6163)

Pages : 1 2


[Annulé][Javascript] tableau length - Ter Rowan - 30-05-2012

salut, je ne comprends pas

j'ai créé un tableau associatif, mais impossible de boucler dessus. En creusant, je m'aperçois que sa longueur est de 0

pour me concentrer sur le souci (et être sur que ça ne vient pas de mon code) j'ai fait cet exemple bidon :


var tab=new Array;
tab["Lundi"]="semaine";
tab["Mardi"]="semaine";
tab["Mercredi"]="enfant";
tab["Jeudi"]="semaine";
tab["Vendredi"]="semaine";
tab["Samedi"]="weekend";
tab["Dimanche"]="weekend";
alert(tab.length + ' ' + tab["Samedi"]);
me renvoie ... "0 weekend"

pourquoi ce 0 ?
laissez tomber, je viens de voir que je dois faire un for in, length ne rendant rien


erf :'(


RE: [Javascript] tableau length - Sephi-Chan - 30-05-2012

Tu es une victime de PHP : tu confonds objets (Object) et tableaux (Array). Smile


var tab = {
Lundi: "semaine",
Mardi: "semaine",
Mercredi: "enfant",
Jeudi: "semaine",
Vendredi: "semaine",
Samedi: "weekend",
Dimanche: "weekend",
}

Et en l'occurrence, les objets Object n'ont pas de méthode length.

Maintenant, reste à savoir ce que tu veux faire. Smile


RE: [Annulé][Javascript] tableau length - Ter Rowan - 30-05-2012

oui c'est un peu le problème

le tableau associatif est un objet qui se décrit comme un tableau, ça me perturbe

ce que je veux faire est à la fois simple et compliqué :

je lis un fichier json (enfin, un .js inclus dans ma page)
qui contient des "cellules" (un id, un label, des commentaires, une classe, ...)
chaque cellule est "liée" à d'autres part une relation parent-enfants (0 à n parents, 0 à n enfants)

exemple qu'on pourrait voir dans un jeu


{
id : 'pouvoir1',
type : 'dispo',
value : 1,
name :'pouvoir 1 de la mort qui blesse',
definition : 'augmente les dégats de ...',
},
{
id : 'pouvoir2',
type : 'indispo',
value : 0,
name :'pouvoir 2 de la mort qui tue',
definition : 'détruit l adversaire si...',
}
le from porte les "id" des cellules parent, ici pouvoir2 ne peut être appris que si pouvoir1 est connu (exemple hein)

j'ai réussi à créer dynamiquement un diagramm (genre arbre des talents wow), avec des flèches
le problème c'est que j'ai calculé "à la main" les positions x et y de chaque cellule

{
id : 'pouvoir2',
type : 'indispo',
value : 0,
name :'pouvoir 2 de la mort qui tue',
definition : 'détruit l adversaire si...',
x : 450,
y : 70
}

et ça m'ennuie de me retaper toutes les positions à chaque fois que j'ajoute ou enlève

autant en php, je n'aurais qu'un problème d'algo, autant en javascript, je rame complètement...

mon algo :
+ parcourir l'ensemble des cellules et construire une sorte d'arbre (donc 'tableau' associatif pour créer les objets de toutes les cellules puis créer les liens)

cells['parent'].aaddchild( cells['enfant'])

+ ensuite calculer la place occupée (par récursivité : une feuille vaut 1, un noeud de vaut la somme des places occupées par les noeuds 'enfants')
+ en déduire les positions (bon j'ai pas encore complètement creuser là)

mais j'en chie à construire mon arbre, j'ai jamais fait d'objets, de méthodes etc... que du procédural et de l'évenementiel simple en javascript

(j'ai édité j'avais pris un raccourci)


RE: [Annulé][Javascript] tableau length - Maks - 30-05-2012

Object.keys(obj).length pour la "longueur" d'un "objet".

Ton JSON devrait être fait ainsi je pense :


{

"pouvoir" : {

"1" : {

type : 'dispo',
value : 1,
name :'pouvoir 1 de la mort qui blesse',
definition : 'augmente les dégats de ...'

},

"2" : {

type : 'indispo',
value : 0,
name :'pouvoir 2 de la mort qui tue',
definition : 'détruit l adversaire si...'

}
},

"potion" : {

"1": {

}

// [...]

}
}

Puis pour parcourir



var parents = [];
var childs = [];

for (var cell in jsonData) {

for (var id in jsonData[cell]) {

childs.push(jsonData[cell][id]);
parents.push(jsonData[cell][id]);

// par exemple pour la syntaxe

}
}


Je sais pas si j'ai répondu j'ai pas trop compris ce que tu voulais faire lol


RE: [Annulé][Javascript] tableau length - Ter Rowan - 30-05-2012

mon json est bien comme cela


le souci, c'est que je développe la partie "calcul" en prenant comme a priori que les "pouvoirs" ne sont pas forcement ordonnés (ie je ne sais pas si la cellule mère arrive après ou avant la cellule fille dans le json)

je dois donc garder en réserver des liens parent enfant non attribués car le parent n'est pas encore créés


je suis uniquement sur des problèmes de syntaxe de niveau très faibles. Là je rame depuis 20 min pour attribuer une valeur à un tableau à deux dimensions.... une fois la syntaxe expérimentée, ça devrait tourner tout seule (en dehors de l'algo, je sens que je vais bien rigoler ...)


RE: [Annulé][Javascript] tableau length - Maks - 30-05-2012

Si tu ne veux pas organiser ton JSON tu te rajoutes des problèmes tout seul je trouve ^^

Sinon pour le tableau à deux dimensions :

var arr = [];
var subArr = ['foo', 'bar'];
arr.push(subArr);

console.log(arr[0][1]); // bar

Si c'est des problèmes de syntaxe simple, il y a le site du zéro Wink


RE: [Annulé][Javascript] tableau length - Ter Rowan - 30-05-2012

(30-05-2012, 06:49 PM)Ter Rowan a écrit : mon json est bien comme cela

==> il est comme tu l'as décrit


RE: [Annulé][Javascript] tableau length - Maks - 30-05-2012

Ah pardon je pensais que tu m'envoyais dans les roses à propos du JSON ahah Big Grin

A la limite tu pourrais faire une vraie arborescence :



{

"pouvoir1" : {

type : 'dispo',
value : 1,
name :'pouvoir 1 de la mort qui blesse',
definition : 'augmente les dégats de ...',
childs : {

"pouvoir 2" : {

type : 'indispo',
value : 0,
name :'pouvoir 2 de la mort qui tue',
definition : 'détruit l adversaire si...'

},

"pouvoir 3" : {

type : 'indispo',
value : 0,
name :'pouvoir 2 de la mort qui tue',
definition : 'détruit l adversaire si...'
childs : {

//....
}
}
}
}




RE: [Annulé][Javascript] tableau length - Ter Rowan - 30-05-2012

J avais pensé à l arbo directement en néon, mais ça me perturbait à deux niveaux : d une part je considère ce fichier json comme une bdd, d autres part, l objectif était de créer autant de cellule dans le html que de pouvoirs dans le json et la une simple boucle suffit (d autant qu on est en n,n dans certains cas, donc arbo bizarre)


RE: [Annulé][Javascript] tableau length - Maks - 03-06-2012

Tu as réussi finalement ?