I wrote a code (with help from another question) in order to get objects from a json tree.
let objFound = null;
function getObjFromValue(obj, prop, val) {
Object.keys(obj).forEach((key) => {
if (objFound == null) {
if (key === prop && val === obj[key]) {
objFound = obj;
}
if (typeof obj[key] === 'object') {
getObjFromValue(obj[key], prop, val);
}
}
});
return objFound;
}
The problem with it is, that I can use it only once since the variable objFound is global (I need it to stop the forEach loop somehow) and never gets nulled again, so when I make another search I receive the previous and first object that the function found. Is there a way to improve/fix my function?
You can use a local variable to return the value, after setting the global variable to null.
let toReturn = objFound;
objFound = null;
return toReturn;
However, this global variable approach might not be the best one. The comment of @pilchard has a good alternative, making the variable local.