Encontré un buen ejemplo aquí que muestra cómo mirar a través de arrayObjects con una condición, pero tengo una pregunta.
Tal como está, su consola registra cada vez que la condición es falsa. ¿Es posible solo console.log una vez cuando haya terminado de recorrer todo?
var arrayObjects = [{ "building": "A", "status": "good" }, { "building": "B", "status": "horrible" } ]; for (var i = 0; i < arrayObjects.length; i++) { console.log(arrayObjects[i]); for (key in arrayObjects[i]) { if (key == "status" && arrayObjects[i][key] == "good") { console.log(key + "->" + arrayObjects[i][key]); } else { console.log("nothing found"); } } }Supongo que desea que imprima Nothing found cuando realmente no se encuentra nada, ni siquiera una sola cosa ...
Entonces, puedes probar esto.
var arrayObjects = [{"building":"A", "status":"good"}, {"building":"B","status":"horrible"}]; var isFound = false; for (var i=0; i< arrayObjects.length; i++) { console.log(arrayObjects[i]); for(key in arrayObjects[i]) { if (key == "status" && arrayObjects[i][key] == "good") { isFound = true console.log(key + "->" + arrayObjects[i][key]); } } } if (isFound === false){ console.log("nothing found"); }Simplemente use .length con la condición if.
var arrayObjects = [{ "building": "A", "status": "good" }, { "building": "B", "status": "horrible" } ]; for (var i = 0; i < arrayObjects.length; i++) { console.log(arrayObjects[i]); if( i === arrayObjects.length-1 ) { console.log("nothing found"); } }Si está dispuesto a refactorizar su código, puede ahorrar en complejidad de tiempo usando solo un ciclo con Array.reduce()
var arrayObjects = [{ "building": "A", "status": "good" }, { "building": "B", "status": "horrible" } ]; const foundKeys = arrayObjects.reduce((bool, key) => { console.log(key) if (key.status === "good") { console.log("status ->", key.status); bool = true } return bool }, false) if (!foundKeys) { console.log("Nothing found") }