dump() - Javascript equivalent of PHP's print_r() function
The moment I saw the print_r() function of PHP, I fell in love with it. It is a very necessary function and I cannot understand why no other language supports it. JavaScript is one such language. So, I have ported the print_r function to javascript.
/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
* The level - OPTIONAL
* Returns : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
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 += dump(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}
This is how the function is called. In this example we will give a complex array as the argument.
//Calling the function...
function init() {
var arra = new Array("So long",'s',42,42.13,"Hello World");
var assoc = {
"val" : "New",
"number" : 8,
"theting" : arra
};
alert(dump(assoc));
}
window.onload=init;
The result will be returned in the following format...
'val' => "New" 'number' => "8" 'theting' ... '0' => "So long" '1' => "s" '2' => "42" '3' => "42.13" '4' => "Hello World"
You can alert the returned text - if it is small. If there is a large amount of content, put the data into a textarea. This will make reading easier.

Comments
too much recursion
[Break on this error] dumped_text += dump(value,level+1);
I'm assuming because it's dealing with nested objects?
So often this comes in handy when dealing with complex event handling.
Anders
a, strong, em, b, i, code, pre, pandbrallowed. Other tags will be shown as code(< will become <). Urls, Line breaks will be auto-formated.