Mam zagnieżdżony obiekt JavaScript jakJavascript: Dostęp zagnieżdżone wartości w danych JSON z wykorzystaniem dynamicznych nazw zmiennych
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' }
};
Tutaj mogę uzyskać dostęp do pól jako data.profile.age.type lub data.name.type . Brak problemów A jeśli mam nazwy zmiennych dynamicznych, mogę uzyskać dostęp, jak poniżej. Znowu nie ma problemów.
f = 'profile'; data[f].age.type
Ale tutaj mam nazwy zmiennych takich jak 'nazwa', 'profile.age', 'profile.city' itp i oczywiście nie mogę mieć do nich dostęp jako 'f' profile.age =; dane [f] .typ, które nie będą działać.
Czy każdy może podpowiedzieć mi, jak uzyskać do nich dostęp (uzyskać/ustawić) w najprostszy i najprostszy sposób?
Uwaga: próbowałem tego i działa w trybie get.
data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;
Chociaż zestaw nie wydaje się być wystarczająco prosty. Daj mi znać, jeśli istnieją lepsze rozwiązania również w zakresie pobierania i ustawiania.
Miałeś rację zadać to pytanie na SO. Za każdym razem, gdy używasz eval w JavaScript, prawie na pewno robisz coś niewłaściwego. –
Dzięki za poinformowanie mnie o eval. Może być eval jest złe! :-) – rsmoorthy
Powiedziałeś to. Zapoznaj się z ostatnią propozycją oferowaną tutaj: http://javascript.crockford.com/code.html –