Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 17.03.2012, 21:02
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kidar2
2. Есть некоторый объект, у него есть вложенные свойства:
a.b.c.d.e

Как можно компактно и быстро получить значение свойства "e"
Исходя из этого, структура объекта должна быть такая:
var object = {
    a: {
        b: {
           c: {
               d: {
                   e: 1
               }
           } 
       }
    }
};


Что в этой нотации a.b.c.d.e не устраивает?
Ответить с цитированием
  #12 (permalink)  
Старый 18.03.2012, 12:39
Аспирант
Отправить личное сообщение для kidar2 Посмотреть профиль Найти все сообщения от kidar2
 
Регистрация: 05.01.2010
Сообщений: 64

Длина паровоза может быть произвольной, a.b.c.d.e лишь пример, может ещё длиннее: a.b.c.e.f.q.w.e.e.r.t, длина заранее неизвестна.
Хочется какой-то метод getPropretyValue(a,"b.c.d.e.") который вернёт undefined если какогото вагона нету в этой цепочке.
Ответить с цитированием
  #13 (permalink)  
Старый 18.03.2012, 13:25
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

return a && a.b && a.b.c && a.b.c.d;

Ответить с цитированием
  #14 (permalink)  
Старый 18.03.2012, 22:44
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

function resolve ( obj, lookups ) {
	var curr = obj, 
		items = lookups.split("."),
		i = 0, 
		len = items.length;
	for ( ; i < len; i++ ) {
		curr = curr[ items[ i ] ];
		if ( typeof curr != 'object' ) break;
	}
	return curr;
}
alert( 
	resolve({a: {b: {c: {d: {e: { f: 1 }}}}}}, "a.b.c.d.e.f") + "\n" + 
	resolve({a: {b: {c: {d: {e: { f: 1 }}}}}}, "q.w.e.r.t.y") 
);
Ответить с цитированием
Ответ



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

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