Ho un oggetto JavaScript annidato comeJavascript: i valori di accesso annidati nei dati JSON utilizzando i nomi delle variabili dinamiche
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' }
};
Qui, posso accedere ai campi come data.profile.age.type o data.name.type . Nessun problema E se ho nomi di variabili dinamiche, posso accedere come sotto. Di nuovo, nessun problema.
f = 'profile'; data[f].age.type
Ma, qui ho i nomi delle variabili come il 'nome', 'profile.age', etc 'profile.city' e ovviamente non posso accedere come f 'profile.age'; data [f] .type che non funzionerà.
Qualcuno può guidarmi su come accedervi (ottenere/impostare) nel modo più diretto e semplice?
Nota: ho provato questo e funziona per ottenere.
data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;
sebbene set non sembra essere abbastanza semplice. Per favore fatemi sapere, se ci sono soluzioni migliori per ottenere e impostare pure.
hai fatto bene a porre questa domanda su SO. Ogni volta che ti ritrovi a usare eval in Javascript, stai quasi certamente facendo la cosa sbagliata. –
Grazie per avermi fatto conoscere la valutazione. Può essere eval è il male! :-) – rsmoorthy
Lo hai detto tu. Dai un'occhiata all'ultimo suggerimento offerto qui: http://javascript.crockford.com/code.html –