Recursion Javascript using JSON -
my goal isn't track number of times recursive call happens rather depth level in json. trying create html table proper indentations using recursion. have no way of seeing level @ determine "indent" child element relative parent.
i have following structure:
{ "sminforec":{ "tsutc":{ "@attributes":{ "hex":"404211d8", "intermediate":"1078071768", "uom":"" }, "#text":"2014-03-05t16:22:48z" }, "trig":{ "@attributes":{ "hex":"0003", "intermediate":"3", "uom":"" }, "#text":"3" }, "gid":{ "@attributes":{ "hex":"0c90", "intermediate":"3216", "uom":"" }, "dlid":{ "#text":"12" }, "mlid":{ "#text":"144" } }, "toh":{ "@attributes":{ "hex":"0005540f", "intermediate":"349199", "uom":"hours" }, "#text":"96.999799822" } } } i recursively iterate , know depth of level processing i've been hacking @ while , not able calculate depth correctly ideas?
edit***
function iterate(obj,callback){ (key in obj){ if(typeof obj[key] === 'object' && key !== "hex" && key !== "intermediate") { console.log("**********************************************"); console.log("key: " + key); console.log("obj[key]: " + obj[key]); console.log("level inside iterate callback: " + level); console.log("**********************************************"); iterate(obj[key],callback); } else if(key !="uom") { console.log("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); console.log("key: " + key); console.log("obj[key]: " + obj[key]); console.log("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); callback(obj[key]); } } console.log("level: " + level); } iterate(jsondata[namespace].data, function(obj){ level++; console.log("---------------------------------------------"); console.log(obj); console.log("level inside iterate: " + level); console.log("---------------------------------------------"); });
i'm feeling generous...
var maxdepth = 0; function traverse(node, depth) { maxdepth = math.max(maxdepth, depth); //...do data in node if want... //process children, if (var in node) { traverse(node[i], depth+1); } } traverse(your-json);
Comments
Post a Comment