I'm trying to do a lookup until i found an especific value; currently using if statements like this but right now its only two levels and i dont need how many if statements will be needed until the conditions meets.
if (newObject.parent.toString() != 1) {
alert(newObject.shareholder ' no es 1 Buscaremos sus padres');
var newObject = parentSearch.search(newObject.parent.toString())[0].item;
if (newObject.parent.toString() != 1) {
var newObject = parentSearch.search(newObject.parent.toString())[0].item;
} else {
alert(newObject.shareholder ' Found');
}
} else {
alert(newObject.shareholder ' Found');
}
Is there a way to avoid using infinite IF statements ?
CodePudding user response:
You may want to check JSONPath for that deep lookup : https://jsonpath.com/.
It allows you to make a string query and execute it on an object and returns fields that match the query.
CodePudding user response:
You can make use of recursion as follow:
function checkObject(newObject) {
if (newObject.parent.toString() != 1) {
alert(newObject.shareholder ' no es 1 Buscaremos sus padres');
const newObject = parentSearch.search(newObject.parent.toString())[0].item;
checkObject(newObject) // recursion
} else {
alert(newObject.shareholder ' Found');
}
}
In case you cannot use recursion, you can use following:
function checkObject(newObject) {
while (true){
if (newObject.parent.toString() != 1) {
alert(newObject.shareholder ' no es 1 Buscaremos sus padres');
newObject = parentSearch.search(newObject.parent.toString())[0].item;
} else {
alert(newObject.shareholder ' Found');
break;
}
}
}