Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите как вывести все свойства объекта? (https://javascript.ru/forum/misc/31811-podskazhite-kak-vyvesti-vse-svojjstva-obekta.html)

tiho 21.09.2012 14:27

Подскажите как вывести все свойства объекта?
 
Есть объект
obj = {ob : "param 1", more : {ob : "param 2", more: {ob : "param 3", more : {ob: param: "param 3", more: "stop" }}}};

как мне его перебрать чтобы получить массив всех ob и массив всех more ?

пожалуйста подскажите!

ksa 21.09.2012 14:33

Цитата:

Сообщение от tiho
как мне его перебрать

Ну косинус же! (с) :D
http://javascript.ru/for..in

ksa 21.09.2012 14:34

Цитата:

Сообщение от tiho
чтобы получить массив всех ob и массив всех more ?

Ну и еще из букваря...
http://javascript.ru/typeof

tiho 21.09.2012 14:39

ksa, да я понимаю как это сделать для свойств верхнего уровня, а как перебрать вложенные объекты? подскажи пожалуйста! :)

ksa 21.09.2012 14:54

Цитата:

Сообщение от tiho
как перебрать вложенные объекты?

1. Проверить не объект ли это...
2. Если объект - перебрать его как любой объект.

Про рекурсию слышал? :) Так вот это как раз её случай. ;)

ksa 21.09.2012 14:56

Цитата:

Сообщение от tiho
{ob: param: "param 3", more: "stop" }

А это как понимать? :blink:

tiho 21.09.2012 15:00

это типа сигнал "хватит переберать" :)

PS. про рекурсию щас почитаю, спасибо.

ksa 21.09.2012 15:01

Цитата:

Сообщение от tiho
это типа сигнал "хватит переберать"

По мне так это типа "синтаксическая ошибка"... :D

ksa 21.09.2012 15:03

Цитата:

Сообщение от tiho
получить массив всех ob и массив всех more ?

Ну про массив "всех ob" кагбэ понятно... А вот зачем тебе еще массив объектов (которые more)?
Нипанятна... :cray:

tiho 21.09.2012 15:19

function parseOb (ob) {
	for(var key in ob) 
	{
		var massVal = []
		var massMore = []
		massVal.push(key)
		massMore.push(ob[key])
		if (ob[key] instanceof Object)
		{
			parseOb(ob)
		}
	}
}
var obj = {val: 1, more: { val: 2, more: { val: 3, more: { val: 4, more: 0 } } } };
parseOb(obj);

ругается Uncaught RangeError: Maximum call stack size exceeded

ЗЫ, мне нужно понять если следущий more объект то взять его имя (val) и так пока незакончатся все more (следуя вашему совету поменял "stop" на 0)


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