JSObjectTraversal
by santon
JavaScript
var obj = {
firstName: "John",
lastName: "Doe",
address1A: {
street: "120 Washington St",
city: "Mountain View",
state: "CA",
address2A: {
street: "100 Washington st",
city: "Mountain View",
state: "CA",
address3A: {
street: "150 Washington st",
city: "Mountain View",
state: "CA",
address4A: {
street: "150 Washington st",
city: "Mountain View",
state: "CA",
}
}
}
},
address1B: {
street: "120 Washington St",
city: "Mountain View",
state: "CA",
address2B: {
street: "100 Washington st",
city: "Mountain View",
state: "CA",
address3B: {
street: "150 Washington st",
city: "Mountain View",
state: "CA",
address4B: {
street: "150 Washington st",
city: "Mountain View",
state: "CA",
}
}
}
}
};
function traverse(initObj, depth) {
depthTraversal(initObj, depth, 1);
}
function depthTraversal(objArg, depthArg, counterArg) {
//create a closure for remembering loop variables
return (function (myObj, myDepth, counter) {
//console.log(myDepth + " - " + counter);
if (myDepth < counter) {
return;
}
//console.log(myObj);
for (var prop in myObj) {
//console.log(prop + " :" + typeof (myObj[prop]));
if (myObj.hasOwnProperty(prop)) {
if (typeof (myObj[prop]) === "object") {
console.log(prop);
depthTraversal(myObj[prop], myDepth, counter + 1);
}
}
}
}(objArg, depthArg, counterArg)); //IIFE
};
traverse(obj, 4);