2017-10-13 107 views
0

我审查PR的,笔者有在那里他们使用重复ternaries,这样的情况 -重构重复的三元语句?

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

这似乎重复,但更好的方法不会立即映入脑海。我想过分配给一个空字符串并重新指定if块,但我觉得这不是更清洁。

任何建议有帮助,并感谢您的时间。

回答

2

也许你可以使用数组destructoring ..

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

+0

如果较长,'阵列(3).fill伪( “”)'可能会更好。而且应该注意的是,这是ES6 –

+1

@Jonasw是的,'Array.fill',如果你有更多的条件,在这里也可以很好地工作。 ES6,我现在不想提到这一点,我个人认为现在处于一个阶段,如果你需要ES5,OP应该提及它。我们需要把ES5归入历史书籍中。 :)另外,OP使用'const',所以他应该确定这一点。 – Keith

1

您可以将问题解决并采用预定义的函数,只需为真实条件插入值即可。

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

const checkCondition = setCondition(isConditionTrue, ''); 

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