Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2015, 14:36
Новичок на форуме
Отправить личное сообщение для Джон "Капитан" Воробей Посмотреть профиль Найти все сообщения от Джон "Капитан" Воробей
 
Регистрация: 06.08.2015
Сообщений: 5

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 (permalink)  
Старый 06.08.2015, 15:06
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

ну 2-ое в 14 строчек читается намного легче чем 1-ое в 5 строчек
Ответить с цитированием
  #3 (permalink)  
Старый 06.08.2015, 15:52
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 181

var wordEnding = {1: ' 1 ', 2: '-x ', 3: '-x ', 4: '-x ', 5: '-ти ', 6: '-ти ', 9: '-ти ', 7: '-ми ', 8: '-ми '};
result = value.type + ' ' +value.rooms + (wordEnding[value.rooms] || '') + 'комн.';

И еще такой момент - в твоем первом варианте скрыт дефект - лишняя проверка. Используй else, чтобы по возможности не выполнять лишних проверок, если какое-то условие подошло. Кроме того, если бы использовались какие-то пересекающиеся условия, то ты бы мог получить исполнение нескольких условных блоков, что является ошибкой.

Последний раз редактировалось demoniqus, 06.08.2015 в 15:56.
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2015, 18:42
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Джон "Капитан" Воробей,
Независимо от "красоты" if универсальней и проще. Не стоит экономить на спичках, лучше вообще switch не использовать.
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2015, 18:47
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Джон "Капитан" Воробей,
Кстати, в Вашем первом куске не хватает ретурнов. Оберните все функциеей и используйте ретурн, а при таком подходе как у Вас, Вы должны учитывать, что может исполниться не одна ветка ветвления.

а в свитче используется break а не return.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с оператором switch psii Javascript под браузер 15 22.11.2014 23:10
Javascript чат-бот FanAizu Общие вопросы Javascript 5 30.01.2014 03:00
switch и альтернативы - что использовать? Placido Общие вопросы Javascript 3 16.12.2013 04:55
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
В зависимости от referrer выводить рекламу adsene или зорьки wlad2 Общие вопросы Javascript 12 19.12.2010 01:02