var arr = { foo : 1, bar: { baz : 2 }, bee : 3 }
function getter(variable) {
return arr[variable];
}
Jeśli chcę „foo” vs „bee” mogę po prostu zrobić arr[variable]
- to łatwe, a funkcja robi.W javascript w jaki sposób można dynamicznie uzyskać zagnieżdżonych właściwości obiektu
Ale co, jeśli chcę uzyskać arr.bar.baz
AKA arr[bar][baz]
?
Co mogę przekazać do funkcji gettera, która pozwoli mi to zrobić (i oczywiście pozwól mi uzyskać właściwości nie zagnieżdżone, używając tej samej funkcji).
Próbowałem getter('bar.baz')
i getter('[bar][baz]')
, ale te nie działały.
Przypuszczam, że mogę analizować kropki lub nawiasy (jak tutaj: In javascript, test for property deeply nested in object graph?). Czy istnieje czystszy sposób? (Poza eval oczywiście.)
Szczególnie, że muszę uzyskać głęboko ustawione poprawnie wiele razy w pętli na kilka elementów tablicy.
Dlaczego po prostu nie używasz tego podejścia z połączonego pytania? – Shi
Głównie ze względu na narzut wywoływania funkcji tak często, a także jeśli istnieje lepszy sposób, chcę ją poznać. – Ariel