Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2012, 23:32
kaf kaf вне форума
Интересующийся
Отправить личное сообщение для kaf Посмотреть профиль Найти все сообщения от kaf
 
Регистрация: 25.06.2012
Сообщений: 24

Как получить доступ к элементу объекта по "динамической цепочке"
Есть объект obj
Есть массив переменной длины [k1,k2,...,kn], где ki - строка или число
Известно, что obj[k1][k2]...[kn] существует
Как в общем случае выполнить obj[k1][k2]...[kn]=val ?
Пока делаю это через eval, но, возможно, есть более простое решение.
Ответить с цитированием
  #2 (permalink)  
Старый 14.09.2012, 23:43
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

перекопировать из массива в объект, что ли?
var obj = {};

var k = [ 'k1', 'k2', 3, 4 ];

for (var i = 0; i < k.length; i++) {
    obj[i] = k[i];
}
Ответить с цитированием
  #3 (permalink)  
Старый 14.09.2012, 23:49
kaf kaf вне форума
Интересующийся
Отправить личное сообщение для kaf Посмотреть профиль Найти все сообщения от kaf
 
Регистрация: 25.06.2012
Сообщений: 24

Нет.
Здесь что-то вроде n-мерного объекта. Если по текущему примеру, то obj.k1.k2[3][4]=val
Но в общем случае n не фиксировано.
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2012, 01:24
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Можно сделать так:
var tempObj=obj;
for (var i=0; i<arr.length-1; i++)
  tempObj=tempObj[arr[i]];
tempObj[arr[i]]=val;
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2012, 10:06
kaf kaf вне форума
Интересующийся
Отправить личное сообщение для kaf Посмотреть профиль Найти все сообщения от kaf
 
Регистрация: 25.06.2012
Сообщений: 24

oneguy, спасибо, работает.
P.S. Изначально пробовал похожую логику, но, видимо, в чем-то ошибся, т.к. не сработало (исходников, к сожалению, не осталось)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Получить доступ к "почти соседнему" элементу через target revvo Общие вопросы Javascript 10 18.01.2011 18:50
Как в jQuery получить доступ к фрейму или самому верхнему окну? Neokortex jQuery 7 20.12.2010 10:38
Как получиться доступ к элементам не своей страницы? AlkaLoiD Общие вопросы Javascript 4 29.11.2010 12:47
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00