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