2016-11-16 5 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

Кстати, я думаю, может быть, вместо того, чтобы использовать ==, === лучше в этом случае:

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

heh not sure, если бы я назвал это «более красивым», но определенно более кратким – Damon

+0

@ IsmailBadawi да, я только что заметил и отредактировал свой ответ: p –

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' - это ложь,' значение == 0' - нет. – Marty

+0

как мой плохой ... извините, но вы забыли '.value', который является' .number' в 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] не существует или его значение является одним из: 0 , undefined, null, или пустую строку.

Смежные вопросы