j'aimerai acc�der � un champ d'un objet de la mani�re suivante:
Est ce que je dois utiliser eval()? Si oui comment car je ne m'en suis jamais servi.
Code : S�lectionner tout - Visualiser dans une fen�tre � part data[i].lc_qte.# valeur de lc[x] #
j'aimerai acc�der � un champ d'un objet de la mani�re suivante:
Est ce que je dois utiliser eval()? Si oui comment car je ne m'en suis jamais servi.
Code : S�lectionner tout - Visualiser dans une fen�tre � part data[i].lc_qte.# valeur de lc[x] #
voila un dump de mes variables:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 data[].lc_qte: {"26\/07\/2011 10:18:00":[{"QTE":1,"ID_PRODUIT":3771},{"QTE":2,"ID_PRODUIT":3772},{"QTE":3,"ID_PRODUIT":3773},{"QTE":4,"ID_PRODUIT":3774},{"QTE":5,"ID_PRODUIT":3775},{"QTE":12,"ID_PRODUIT":3776},{"QTE":13,"ID_PRODUIT":3777},{"QTE":14,"ID_PRODUIT":3778},{"QTE":15,"ID_PRODUIT":3779},{"QTE":16,"ID_PRODUIT":3780},{"QTE":17,"ID_PRODUIT":3781},{"QTE":18,"ID_PRODUIT":3782},{"QTE":19,"ID_PRODUIT":3783}], "26\/07\/2011 10:33:00":[{"QTE":20,"ID_PRODUIT":3771},{"QTE":19,"ID_PRODUIT":3772},{"QTE":18,"ID_PRODUIT":3773},{"QTE":17,"ID_PRODUIT":3774},{"QTE":15,"ID_PRODUIT":3775},{"QTE":14,"ID_PRODUIT":3776},{"QTE":113,"ID_PRODUIT":3777},{"QTE":12,"ID_PRODUIT":3778},{"QTE":11,"ID_PRODUIT":3779},{"QTE":10,"ID_PRODUIT":3780},{"QTE":9,"ID_PRODUIT":3781},{"QTE":8,"ID_PRODUIT":3782},{"QTE":7,"ID_PRODUIT":3783}], "26\/07\/2011 10:34:00":[{"QTE":1,"ID_PRODUIT":3772},{"QTE":1,"ID_PRODUIT":3777},{"QTE":1,"ID_PRODUIT":3781},{"QTE":1,"ID_PRODUIT":3783}], "26\/07\/2011 11:23:00":[{"QTE":1,"ID_PRODUIT":3775},{"QTE":1,"ID_PRODUIT":3776},{"QTE":1,"ID_PRODUIT":3782}]} lc: ["26/07/2011 10:18:00", "26/07/2011 10:33:00", "26/07/2011 10:34:00", "26/07/2011 11:23:00", false]
Regarde plutot du cot� de JSON (1, 2, 3) et notamment JSON.parse() pour r�cup�rer des objets � partir de ces chaines.
Un peu de patience, les messages "EVAL, c'est mal" ne vont pas tarder
(et je ne leur donne pas tort, d'o� la piste que je propose
)
(Il n'est pas encore contamin�, il n'est pas trop tard pour agir, les gars !Si oui comment car je ne m'en suis jamais servi.)
Eval c'est mal
Code : S�lectionner tout - Visualiser dans une fen�tre � part data.lc_qte[lc[x]];//si x vaut 0, correspond à ["QTE":1,"ID_PRODUIT":3771},...
je sais que c'est mal et c'est bien pour ca que je pr�ciser que je ne m'en suis jamais servi!
Sans revenir sur eval() en lui-m�me, c'est ici totalement inutile...
Il existe deux fa�ons d'acc�der � une propri�t� d'objet, par la notation point�e (celle que tu utilises), mais qui n�cessite que les noms de propri�t�s respectent un minimum les conventions de nommage, ce qui est loin d'�tre ton cas...
L'autre solution consiste � utiliser la notation � crochets qui est adapt�e � ton cas :
Code : S�lectionner tout - Visualiser dans une fen�tre � part data[i].lc_qte['26\/07\/2011 10:18:00']
Pas de question technique par MP !
Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
Mes formations video2brain : La formation compl�te sur JavaScript � JavaScript et le DOM par la pratique � PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum
que dois je faire pour respecter les conventions alors parce que le m�thode : data[i].lc_qte[lc[x]] ne marche pas
Je vois mieux et je plussoies le eval is evil !
Nul besoin d'�valuer ici. Les �l�ments des objets peuvent �tre accessibles de plusieurs mani�res.
Par exemple, celle que tu connais object.properties
Mais bien s�r, "properties" ici ne peut pas �tre une variable. JS va chercher � avoir une propri�t� appel�e "properties", ne la trouvera (peut-�tre) pas et retournera undefined.
On peut aussi passer par object['properties'] ce qui est exactement le m�me resultat que ci-dessus � une nuance pr�t : object[properties] va , l�, chercher la variable properties et la remplacer dans l'association
Par exemple,
Tu trouveras ici ( http://jsfiddle.net/QyGP5/ ) une version simplifi�e de ce que tu souhaites (car nous n'avons pas tous les �l�ments pour en faire une vraie
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 var properties = 'pwet'; object = {"pwet":"test!"}; alert(object['properties']) // undefined alert(object[properties]) // test!)
ou ici http://jsfiddle.net/QyGP5/1/ si tu n'as pas de console javascript (ce qui est mal)
Partager