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 15:29

я запутался и вас запутал, извините. это совсем не то что мне надо :)

ksa 21.09.2012 15:37

Цитата:

Сообщение от tiho
ругается

Так ты делай правильно... :)

Как вариант

obj = {
	ob : "param 1", 
	more : {
		ob : "param 2", 
		more: {
			ob : "param 3", 
			more : {
				ob: "param 4", 
				more: 0 
			}
		}
	}
};
var aVal = [];
parseOb(obj);
alert(aVal);

function parseOb (Obj) {
	aVal[aVal.length]=Obj['ob']
	if (typeof(Obj['more'])=='object') {
		parseOb(Obj['more'])
	}
};

Aetae 22.09.2012 02:18

Чтоб избежать проблем рекурсией объекта - просто надо вести доп массив объектов и при рекурсивном вызове проверять не было ли такого объекта прежде, и если оный есть - вставлять заглушку про рекурсию или ссылку на оный.(в зависимости от выводимой структуры). Ничего запредельно сложного. Меня если четно напрягает почему JSON.stringify не делает так, а плюёт ошибкой.

FINoM 22.09.2012 02:59

Aetae, и как по-твоему должна выглядеть ссылка в json?

Aetae 22.09.2012 03:45

В json наверное просто игнорировать, просто ворнинг пулять.)

Но да ты прав, я погорячился.)

anton-line 15.11.2015 20:44

Вот делюсь примером, как я просматриваю объект!
 
var a={};
a.key=3;
a.super=6;
a.a=1;
a.ooo={};
a.ooo.w=1;
a.ooo.d='ss';
a.ooo.kk={};
a.ooo.kk.eee=12;
a.sss='ddfdsf';


glu=0; //glubina
delta='';
deltastep='    ';

function showobj(obj,oname){
	if(typeof(obj)=='object'){
		showobj_t+='\n'+delta+oname+' {';
		glu++; delta='';
		for(g=0;g<glu;g++){
			delta+=deltastep;
		}
		for(i in obj){
			if( obj[i] == '[object Object]' ){
				showobj(obj[i],oname+'.'+i);
			}
			showobj_t+='\n'+delta+oname+'.'+i;
			showobj_t+=' = '+obj[i];
		}
		glu--; delta='';
		for(g=0;g<glu;g++){
			delta+=deltastep;
		}
		showobj_t+='\n'+delta+'}';
	}else{
		alert('noT!');
	}
}

var showobj_t=''; //итоговый текст
showobj(a,'a');
alert(showobj_t);

рони 15.11.2015 20:50

anton-line,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

anton-line 15.11.2015 20:50

примечания:
1) deltastep=' '; //тут пробел.. можно поставить 3 пробела для наглядности
2) oname (второй параметр к функции) - тоже только для наглядности
3) проверка "является ли объектом" сделана так: obj[i] == '[object Object]'
потому что "typeof(obj)=='object'" что-то не сработала.. но можете подправить =)
=)

пользуйтесь =)


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