Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Число свойств в объекте и избавление от паравозов (https://javascript.ru/forum/misc/26670-chislo-svojjstv-v-obekte-i-izbavlenie-ot-paravozov.html)

monolithed 17.03.2012 21:02

Цитата:

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

Как можно компактно и быстро получить значение свойства "e"

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


Что в этой нотации a.b.c.d.e не устраивает? ;)

kidar2 18.03.2012 12:39

Длина паровоза может быть произвольной, a.b.c.d.e лишь пример, может ещё длиннее: a.b.c.e.f.q.w.e.e.r.t, длина заранее неизвестна.
Хочется какой-то метод getPropretyValue(a,"b.c.d.e.") который вернёт undefined если какогото вагона нету в этой цепочке.

vasa_c 18.03.2012 13:25

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

:)

nikita.mmf 18.03.2012 22:44

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") 
);


Часовой пояс GMT +3, время: 10:55.