Tengo un objeto Javascript anidado comoJavascript: los valores acceso anidados en los datos JSON utilizando nombres de variables dinámicas
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' }
};
Aquí, pueden acceder a los campos como data.profile.age.type o data.name.type . Sin problemas Y si tengo nombres de variables dinámicos, puedo acceder de la siguiente manera. De nuevo, sin problemas.
f = 'profile'; data[f].age.type
Pero, aquí tengo los nombres de variables como el 'nombre', 'profile.age', etc 'profile.city' y, obviamente, no puedo acceder a ellos como f 'profile.age'; data [f] .type que no funcionará.
¿Alguien me puede guiar cómo acceder a ellos (obtener/configurar) de la manera más directa y sencilla?
Nota: Intenté esto y funciona para get.
data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;
Aunque el conjunto no parece ser lo suficientemente simple. Por favor, avíseme si hay mejores soluciones para get y set también.
Tenías razón para hacer esta pregunta en el SO. Cada vez que te encuentres utilizando eval en Javascript, seguramente estás haciendo lo incorrecto. –
Gracias por informarme acerca de eval. ¡Puede ser eval es malo! :-) – rsmoorthy
Lo dijiste. Eche un vistazo a la última sugerencia ofrecida aquí: http://javascript.crockford.com/code.html –