я запутался и вас запутал, извините. это совсем не то что мне надо :)
|
Цитата:
Как вариант
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'])
}
};
|
Чтоб избежать проблем рекурсией объекта - просто надо вести доп массив объектов и при рекурсивном вызове проверять не было ли такого объекта прежде, и если оный есть - вставлять заглушку про рекурсию или ссылку на оный.(в зависимости от выводимой структуры). Ничего запредельно сложного. Меня если четно напрягает почему JSON.stringify не делает так, а плюёт ошибкой.
|
Aetae, и как по-твоему должна выглядеть ссылка в json?
|
В json наверное просто игнорировать, просто ворнинг пулять.)
Но да ты прав, я погорячился.) |
Вот делюсь примером, как я просматриваю объект!
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);
|
anton-line,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
примечания:
1) deltastep=' '; //тут пробел.. можно поставить 3 пробела для наглядности 2) oname (второй параметр к функции) - тоже только для наглядности 3) проверка "является ли объектом" сделана так: obj[i] == '[object Object]' потому что "typeof(obj)=='object'" что-то не сработала.. но можете подправить =) =) пользуйтесь =) |
| Часовой пояс GMT +3, время: 06:38. |