Para obtener un equivalente exacto al print_r de PHP en JavaScript y poder visualizar toda la estructura anidada de un objeto o JSON, debes implementar una función recursiva personalizada que formatee y devuelva el texto tabulado.
Sí siempre que estás trabajando con JavaScript te encuentras con el mismo problema, como me pasa a mi, para depurar e inspeccionar tus datos, aquí tienes esta maravillosa función que te servirá de mucho para replicar el comportamiento de PHP:
function print_r(arr,level) {
var dumped_text = "";
if(!level) level = 0;
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += " ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') { //If it is an array,
dumped_text += level_padding + "'" + item + "' ...\n";
dumped_text += print_r(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}
¿Cómo funciona esta función print_r en JS?
El script evalúa el tipo de dato mediante typeof. Si detecta un objeto o array, aplica recursividad para añadir tabulaciones visuales según su nivel de profundidad; si detecta un tipo simple (texto o número), imprime el valor directamente.
- Para entender la estructura del objeto que estás intentando leer, el código se basa en tres pilares:
- Nivel de profundidad (level): añade espacios en blanco (level_padding) de forma iterativa para facilitar la lectura visual en consola o pantalla.
- Detección de tipo (typeof): separa el tratamiento de las estructuras complejas (Hashes/Objects) de las cadenas o números básicos.
- Recursividad: la función se llama a sí misma (print_r(value, level+1)) para desglosar elementos anidados sin límite de niveles.
¿Necesitas ayuda con tu código? Implementar funciones a medida agiliza el trabajo diario. Si necesitas ayuda con el desarrollo web y la programación avanzada, en Doowebs podemos ayudarte. ¡Contáctanos!