Estoy tratando de hacer una búsqueda hasta que encontré un valor específico; actualmente estoy usando sentencias if como esta, pero en este momento son solo dos niveles y no necesito cuántas sentencias if se necesitarán hasta que se cumplan las condiciones.
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'); }¿Hay alguna manera de evitar el uso de declaraciones IF infinitas?
Puede hacer uso de la recursividad de la siguiente manera:
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'); } }En caso de que no pueda usar la recursividad, puede usar lo siguiente:
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; } } }Es posible que desee verificar JSONPath para esa búsqueda profunda: https://jsonpath.com/ .
Le permite realizar una consulta de cadena y ejecutarla en un objeto y devuelve campos que coinciden con la consulta.