2016-11-16 98 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或空字符串。

相关问题