2016-11-16 1 views
-1

以下は私のコードのすべてのこのコードをリファクタリングする良い方法はありますか?

if(props.plan[plan_id]) { 
    if(props.plan[plan_id].number== 0) { 
     return null; 
    } 
    else { 
     return 'some value'; 
    } 
    } 

まずあり、私はそのデータを使用して存在しているprop.plan [plan_id]かどうかを確認する必要があります。 if文を二度書いたので、このコードをもっと美しくする方法はありますか?

答えて

1

はところで、私は===が、この場合には優れている、代わりに==を使用するかもしれないと思う:&& operatorを使用して

if(props.plan[plan_id]) { 
    return props.plan[plan_id].number === 0 ? null : 'some value'; 
    } 
2

は三項演算子を使用します。

if (props.plan[plan_id]) 
    return (props.plan[plan.id].number == 0) ? null : 'some value'; 
+0

私はこれを「より美しい」と呼ぶかどうかわかりませんが、もっと簡潔です。 – Damon

+0

@IsmailBadawiはい私はちょっと気付いて編集しました:p –

1

は2 if sからあなたを救うことができます最初のステートメントで終了するため、falseに変換することができます(存在しない場合はprops.plan[plan_id]の値をチェックしようとせず、左側がと評価されます)。):

return props.plan[plan_id] && props.plan[plan_id].number != 0 ? 'some value' : null; 
+0

@Kaiido '0'は偽物です、' value == 0'はそうではありません。 – Marty

+0

どのように私の悪い....申し訳ありませんが、OP btwの '.number'である' .value'を忘れました。それはそのままですが、それは "何らかの価値"にまで伝わらないでしょう – Kaiido

+0

@Kaiido申し訳ありませんが、あなたが何を意味するかを見ています。私は例のコードを間違った方法で読んでいます。 [今すぐ正しく動作する](https://jsfiddle.net/7z16zzh5/1/)。 – Marty

0

なしランタイムエラーがないことを確認するために、私はこれを行うだろう:

return props && props.plan && props.plan[plan_id] ? 'some value' : null 

props.plan[plan_id]が存在していたか、その値は以下のいずれかであるされていない場合はsome valueを取得します。0undefinednull、または空の文字列。

関連する問題