2016-04-21 4 views
0

В JavaScript есть ли способ выбора, если из списка. Я помню, как это делалось в Visual Basic.If Then Select From List

Таким образом, вместо

if (id == "category1") {i = 1}; 
if (id == "category2") {i = 2}; 
if (id == "category3") {i = 3}; 

Есть ли что-то вроде

if.select (

    category1 = 1 
    category2 = 2 
    category3 = 3 
+1

Вы ищете инструкцию '' switch'' (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/switch)? –

+0

Переключатель @JamesThorpe - это то, что сразу же выскочил ко мне, а также – mhodges

+0

переключатель достаточно близко к тому, что вы после ... –

ответ

2

Использование словаря (работ аналогично ENUM):

var dictionary = {"category1": 1, "category2": 2, "category3": 3}; 
i = dictionary[id] 

JSFiddle

Вот переключатель случай пример:

switch(id){ 
    case 'category1': 
    i = 1; 
    break; 
    case 'category2': 
    i = 2; 
    break; 
    case 'category3': 
    i = 3; 
    break; 
} 

Я предпочитаю словарной подход над включение при заходе на посадку, потому что это немного меньше кода, чтобы написать каждый раз, когда вы добавляете новую категорию.

+0

Почему голос? –

+0

Потому что это ужасный ответ - что произойдет, если у вас 50 категорий? Как это лучше, чем у ОП? – Shomz

+0

@Shomz А что, если категории являются «примерами»: 1, «варианты использования»: 2, «и т. Д.»: 3? Ваш ответ анализирует, считая, что категория начинается со строки «category». –

0

Вы можете думать вне коробки:

var i = id.split('category')[1]; 

Вы можете сделать его функцию:

function getCategoryId(id){ 
    return id.split('category')[1]; 
} 

А потом просто называют это нравится:

var i = getCategoryId('category1'); 

Вы также можете использовать substr, он будет выполнять лучший (речь о наносекунд, хотя).


Посмотреть здесь жить:

var id = 'category2'; 
 
function getCategoryId(id){ 
 
    return id.split('category')[1]; 
 
} 
 
alert(getCategoryId(id));


Или просто использовать switch:

switch(id){ 
    case 'category1': 
    i = 1; 
    break; 
    case 'category2': 
    i = 2; 
    break; 
    case 'category3': 
    i = 3; 
    break; 
} 
+0

Хорошо, я выяснил функцию переключателя. Я был смущен кодом, который я просмотрел на https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/switch. Ваш пример очень ясен. Теперь, когда я это вижу, «Case» был синтаксисом, используемым в Visual Basic. – Matt

+0

Да, 'console.log', вероятно, самый быстрый/простой способ отладки вещей в JS. Тем не менее, я настоятельно рекомендую вам использовать один из подходов из моего первого абзаца, так как вам не придется выполнять какую-либо ручную работу при добавлении/удалении категорий, если их формат «categoryXX». – Shomz

+0

В итоге я использовал «словарь», но переключатель также очень хороший вариант. Это то, о чем я думал, когда задавал этот вопрос и хорошо знал будущие проекты. Ах! , , , console.log. , , Я получаю это сейчас. Через два дня я много узнал о JavaScript. Спасибо за вашу помощь. – Matt

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