2017-07-21 3 views
1

Existe-t-il un meilleur moyen d'écrire ceci si condition dans une boucle for.Meilleur style de programmation pour si condition dans JS

for(var i in selectedId) { 
    for(var key in myJSON) { 
    if((key === "correct" && selectedId[i].type === "fp") || key !== "correct") { 
     //do something 
    } 
    } 
} 

Fondamentalement, tout ce que je besoin d'appeler une fonction si la clé ne marche pas la valeur correcte ou si elle est correcte, le type doit être "fp". Existe-t-il une meilleure façon d'écrire cette condition et de la rendre plus lisible?

+0

==? Typo là? –

Répondre

2

état Vous:

if((key === "correct" && selectedId[i].type === "fp") || key !== "correct") 

retours true lorsque:

  • clé est "correcte" et le type est "fp"
  • clé n'est pas "correct"

Vous pouvez le simplifier comme ceci:

if(key !== "correct" || selectedId[i].type === "fp") 

qui retourne true lorsque:

  • clé n'est pas "correct"
  • clé est "correcte" et le type est "fp"

Comme vous pouvez le voir, ils sont équivalents (seulement l'ordre des conditions est échangé).

2

Vous pouvez vous débarrasser de la boucle intérieure:

for(var i in selectedId) { 
    if (Object.keys(myJSON).indexOf("correct") == -1 || selectedId[i].type == 'fp') { 
    //do something 
    } 
}