En fait, je suis nouveau dans le javascript
J'ai utilisé désactivé
ici,
Maintenant dans ceci,
!props.updatedOption1 || !props.updatedOption2 || !props.updatedOption3 || !props.updatedOption4
J'ai ces quatre conditions,
Maintenant, ce que je veux, c'est que, si deux sont remplis, cela devrait être activé
, maintenant ce qui se passe, c'est que quatre d'entre eux sont obligatoires
.
J'ai donc essayé avec la condition &&
mais cela devenait trop long.
Alors, est-ce que on me propose une solution différente?
5 Réponses :
Vous pouvez compter les options avec Array # reduction .
var options = ['updatedOption1', 'updatedOption2', 'updatedOption3', 'updatedOption4'] if (options.some((c => k => !props[k] && !--c)(2))) { // ... }
Ou vous pouvez utiliser une fermeture pour compter et quitter plus tôt si la condition correspond
var options = ['updatedOption1', 'updatedOption2', 'updatedOption3', 'updatedOption4'] if (options.reduce((s, k) => s + !props[k], 0) >= 2) { // ... }
Essayez ceci
['updatedOption1', 'updatedOption2', 'updatedOption3', 'updatedOption4'].filter((option) => props[option]).length >= 2;
Vous pouvez en faire un tableau, puis filtrer
les fausses valeurs et voir si la longueur du tableau résultant est de deux ou plus. Étant donné que deux options sont true
ci-dessous, il sera évalué comme étant Activé:
var props = { updatedOption1: false, updatedOption2: true, updatedOption3: true, updatedOption4: false }; var options = [props.updatedOption1, props.updatedOption2, props.updatedOption3, props.updatedOption4]; options = options.filter(e => e); if (options.length >= 2) { console.log("Enabled!"); } else { console.log("Disabled!"); }
Vous pouvez traiter les valeurs booléen
comme int
:
if((props.updatedOption1 + props.updatedOption2 + props.updatedOption3 + props.updatedOption4) <= 2) { //... }
J'ai utilisé ici car vous avez utilisé
! props.updatedOption
dans l'exemple.
Si updatedOption1-4 sont les seules propriétés des accessoires
, vous pouvez le faire:
const isValid = Object.values(props).filter(p => p).length >= 2;