2017-10-13 8 views
0

私はPR年代の見直しだ、と著者は、彼らはこのように、繰り返し三元系を使用している状況があります -リビジョン3つのステートメントをリファクタリングしますか?

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

これは、反復ようだが、よりよい方法はすぐに心に春はありません。私は空の文字列に割り当てて、ifブロックに再割り当てすることを考えましたが、それはどんなクリーナーでもないと思います。

ご意見をお寄せいただきありがとうございます。

答えて

2

あなたは多分...

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

+0

長い場合は、 '配列は、(3).fill( "")'良いかもしれないdestructoring配列を使用することができます。そして、これはES6 –

+1

@ Jonaswはい、「Array.fill」だと注意してください。条件がもっとあれば、ここでもうまくいくでしょう。 ES6、私はこれを今言及していない傾向があります、私は個人的にあなたがES5を必要とする場合はステージであったと思う、OPはそれに言及する必要があります。私たちはそれが属していたES5を歴史書に入れる必要があります。 :)またOPは 'const'を使っていたので、これでOkにすべきです。 – 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'); 
関連する問題