2016-11-16 102 views
-1

下面是我的代碼是否有更好的方法來重構這段代碼?

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

首先,我需要檢查,如果prop.plan [plan_id的數據類型]是存在,那麼使用它的數據。 有什麼辦法可以使這段代碼更漂亮,因爲我寫了兩次語句。

回答

1

BTW,我想也許不是使用=====在這種情況下更好:

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是的,我只注意到和編輯我的答案:對 –

1

使用&& operator可以節省你從兩個if小號因爲它會在第一條語句中終止,它可以轉換爲false(不會嘗試檢查props.plan[plan_id]的值,除非它存在,並且左側評估爲true):

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

@Kaiido'0'是falsy,'值== 0'是沒有的。 – Marty

+0

如何我的壞....對不起,但你忘記了'。數字''.value'在OP btw。事實上,它不會傳遞給「有價值的」。 – Kaiido

+0

@Kaiido對不起,我明白你的意思了。我以錯誤的方式閱讀示例代碼。 [現在它的行爲正確](https://jsfiddle.net/7z16zzh5/1/)。 – Marty

0

爲了確保沒有運行時錯誤,我會做到這一點:

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

您將獲得some value如果props.plan[plan_id]不存在,或者其值之一:0undefined,null或空字符串。

相關問題