2017-10-13 3 views
0

Je suis passé en revue les relations publiques de, et l'auteur a une situation où ils utilisent ternaires répétées, donc -Refactorisation d'instructions ternaires répétées?

const foo = isConditionTrue ? 'foo' : ''; 
const bar = isConditionTrue ? 'bar' : ''; 
const baz = isConditionTrue ? 'baz' : ''; 

Cela semble répétitif, mais une meilleure méthode n'a pas immédiatement à l'esprit. J'ai pensé à assigner à une chaîne vide et à réaffecter dans un bloc if, mais je ne pense pas que ce soit plus propre.

Toutes les suggestions utiles, et je vous remercie de votre temps.

Répondre

2

Vous pourriez peut-être utiliser le tableau destructoring ..

const isConditionTrue = true; 
 
const [foo,bar,baz] = isConditionTrue ? 
 
    ["foo", "bar","baz"] : ["","",""]; 
 
    
 
console.log(foo, bar, baz); 
 
    
 

+0

Si plus, 'Array (3) .Remplir ("")' pourrait être mieux. Et il faut noter que c'est ES6 –

+1

@Jonasw Oui, 'Array.fill', si vous avez plus de conditions, ça marcherait bien ici aussi. ES6, j'ai tendance à ne pas le mentionner maintenant, je pense personnellement que j'étais à un stade maintenant si vous avez besoin d'ES5, l'OP devrait le mentionner. Nous devons mettre ES5 à sa place, dans les livres d'histoire. :) Aussi l'OP utilisait 'const' donc il devrait être OK avec ça. – Keith

1

Vous pouvez résoudre le problème et prendre une fonction prédéfinie où vous insérez simplement la valeur pour une condition vraie.

const setCondition = (condition, default) => value => condition ? value : default; 

const checkCondition = setCondition(isConditionTrue, ''); 

const foo = checkCondition('foo'); 
const bar = checkCondition('bar'); 
const baz = checkCondition('baz');