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, время: 05:42. |