2017-10-13 116 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');