If или Switch?
Что красивее, это
var result = value.type+" 1 комн.";
if(value.rooms>1&&value.rooms<5) result = value.type+" "+value.rooms+"-х комн.";
if(value.rooms==5||value.rooms==6||value.rooms>8) result = value.type+" "+value.rooms+"-ти комн.";
if(value.rooms==7||value.rooms==8) result = value.type+" "+value.rooms+"-ми комн.";
return result;
или вот это
switch(parseFloat(value.type)){
case 1:
return value.type+" 1 комн.";
case 2:
case 3:
case 4:
return value.type+" "+value.rooms+"-х комн.";
case 5:
case 6:
return value.type+" "+value.rooms+"-ти комн.";
case 7:
case 8:
return value.type+" "+value.rooms+"-ми комн.";
}
Или и то и то унылое г и надо по другому писать? |
ну 2-ое в 14 строчек читается намного легче чем 1-ое в 5 строчек :)
|
var wordEnding = {1: ' 1 ', 2: '-x ', 3: '-x ', 4: '-x ', 5: '-ти ', 6: '-ти ', 9: '-ти ', 7: '-ми ', 8: '-ми '};
result = value.type + ' ' +value.rooms + (wordEnding[value.rooms] || '') + 'комн.';
И еще такой момент - в твоем первом варианте скрыт дефект - лишняя проверка. Используй else, чтобы по возможности не выполнять лишних проверок, если какое-то условие подошло. Кроме того, если бы использовались какие-то пересекающиеся условия, то ты бы мог получить исполнение нескольких условных блоков, что является ошибкой. |
Джон "Капитан" Воробей,
Независимо от "красоты" if универсальней и проще. Не стоит экономить на спичках, лучше вообще switch не использовать. |
Джон "Капитан" Воробей,
Кстати, в Вашем первом куске не хватает ретурнов. Оберните все функциеей и используйте ретурн, а при таком подходе как у Вас, Вы должны учитывать, что может исполниться не одна ветка ветвления. а в свитче используется break а не return. |
| Часовой пояс GMT +3, время: 10:00. |