Tengo el siguiente código donde obtengo 4 atributos diferentes, necesito verificar cada uno si es verdadero e incrementar el conteo
var count = 0; if (props.isApple) { count += 1; } if (props.isOranges) { count += 1; } if (props.isBanana) { count += 1; } if (props.isJackfruit) { count += 1; } console.log(count);¿Hay alguna manera simple o mejor de hacer esto? ¿¿Alguna sugerencia??
Parece un trabajo para reducir
const props = { isApple: true, isOranges: false, isBanana: true, isJackfruit: true } // 3 true values const checks = ["isApple", "isOranges", "isBanana", "isJackfruit"]; const count = checks.reduce((sum, check) => sum + (props[check] ? 1 : 0), 0); console.log("count", count) Esto itera la lista de controles y agrega uno a la suma si esa propiedad es verdadera en props .
Si quisiera que fuera más dinámico e inclusivo de todas las propiedades de prop , podría definir las checks como...
const checks = Object.keys(props)Dado que ha etiquetado esto con reactjs , usaría el memo hook para evitar un recálculo innecesario
import { useMemo } from "react"; const checks = ["isApple", "isOranges", "isBanana", "isJackfruit"]; const YourComponent = (props) => { const count = useMemo(() => checks.reduce((sum, check) => sum + (props[check] ? 1 : 0), 0), [ props ] ); // etc }