Как получить доступ к элементу объекта по "динамической цепочке"
Есть объект obj
Есть массив переменной длины [k1,k2,...,kn], где ki - строка или число Известно, что obj[k1][k2]...[kn] существует Как в общем случае выполнить obj[k1][k2]...[kn]=val ? Пока делаю это через eval, но, возможно, есть более простое решение. |
перекопировать из массива в объект, что ли?
var obj = {}; var k = [ 'k1', 'k2', 3, 4 ]; for (var i = 0; i < k.length; i++) { obj[i] = k[i]; } |
Нет.
Здесь что-то вроде n-мерного объекта. Если по текущему примеру, то obj.k1.k2[3][4]=val Но в общем случае n не фиксировано. |
Можно сделать так:
var tempObj=obj; for (var i=0; i<arr.length-1; i++) tempObj=tempObj[arr[i]]; tempObj[arr[i]]=val; |
oneguy, спасибо, работает.
P.S. Изначально пробовал похожую логику, но, видимо, в чем-то ошибся, т.к. не сработало (исходников, к сожалению, не осталось) |
Часовой пояс GMT +3, время: 08:04. |