2
votes

Validations pour au moins deux de 4 valeurs javascript

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?


0 commentaires

5 Réponses :


1
votes

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) {
    // ...
}


0 commentaires

1
votes

Essayez ceci

['updatedOption1', 'updatedOption2', 'updatedOption3', 'updatedOption4'].filter((option) => 
props[option]).length >= 2;


0 commentaires

1
votes

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!");
}


0 commentaires

0
votes

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.


0 commentaires

0
votes

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;


0 commentaires