Disculpenmé que reviva un tema tan viejo, pero encontré un bug en este script y dado a que es una función bastante útil, me pareció importante modificarlo:
Cita:
Iniciado por Panino5001 Fijate si te sirve:
Código PHP:
<script>
var objeto = {nivel:'A', nombre:'Costa Sur', personal:'145',algo:{pepe:123},otro:['a','b']};
var a='';
function recorrer(o){
if(o.constructor==Array)
a+='[';
if(o.constructor==Object)
a+='{';
for(var i in o){
if(o.constructor!=Array)
a+=i+':';
if(o[i].constructor==Object){
recorrer(o[i]);
}else if(o[i].constructor==Array){
recorrer(o[i]);
}else if(o[i].constructor==String){
a+='"'+o[i]+'",';
}else{
a+=o[i]+',';
}
}
if(o.constructor==Object)
a+='},';
if(o.constructor==Array)
a+='],';
return a.substr(0,a.length-1).split(',}').join('}').split(',]').join(']');
}
alert(recorrer(objeto));
</script>
Donde llama a la función recorrer recursivamente, no se está almacenando el valor que devuelve la función. El script corregido quedaría así:
Código javascript
:
Ver originalfunction recorrer(o)
{
var a='';
if(o.constructor==Array)
{
a+='[';
}
if(o.constructor==Object)
{
a+='{';
}
for(var i in o)
{
if(o.constructor!=Array)
{
a+=i+':';
}
if(o[i].constructor==Object)
{
a+=recorrer(o[i])+',';
}
else if(o[i].constructor==Array)
{
a+=recorrer(o[i])+',';
}
else if(o[i].constructor==String)
{
a+='"'+o[i]+'",';
}
else
{
a+=o[i]+',';
}
}
if(o.constructor==Object)
{
a+='},';
}
if(o.constructor==Array)
{
a+='],';
}
return a.substr(0,a.length-1).split(',}').join('}').split(',]').join(']');
}
¡Suerte!