J'ai un objet Javascript comme nichéJavascript: valeurs imbriquées l'accès à des données JSON en utilisant les noms de variables dynamiques
var data = { 'name': { 'heading': 'Name', 'required': 1, 'type': 'String' },
'profile': {
'age': { 'heading': 'Age', 'required': 0, 'type': 'Number' },
'phone': { 'heading': 'Phone', 'required': 0, 'type': 'String'},
'city': { 'heading': 'City', 'required': 0, 'type': 'String'},
},
'status': { 'heading': 'Status', 'required': 1, 'type': 'String' }
};
Ici, je peux accéder aux champs data.profile.age.type ou data.name.type . Pas de problèmes Et si j'ai des noms de variables dynamiques, je peux accéder comme ci-dessous. Encore une fois, pas de problèmes.
f = 'profile'; data[f].age.type
Mais, ici, j'ai les noms de variables comme 'nom', 'profile.age', 'profile.city' etc et, évidemment, je ne peux pas y accéder en tant que f = 'profile.age'; data [f] .type qui ne fonctionnera pas.
Quelqu'un peut-il me guider sur la façon d'y accéder (obtenir/régler) de la manière la plus directe et la plus simple?
Note: J'ai essayé ceci et cela fonctionne pour obtenir.
data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;
bien que l'ensemble ne semble pas être assez simple. S'il vous plaît laissez-moi savoir, s'il y a de meilleures solutions pour obtenir et définir ainsi.
Vous aviez raison de poser cette question sur le SO. Chaque fois que vous vous trouvez en utilisant eval dans Javascript, vous faites presque certainement la mauvaise chose. –
Merci de m'avoir informé sur eval. Peut être eval est le mal! :-) – rsmoorthy
Vous l'avez dit. Jetez un oeil à la dernière suggestion proposée ici: http://javascript.crockford.com/code.html –