2015-08-09 2 views
0

Я пытаюсь использовать два оператора switch для интерпретации информации из вызова AJAX.Заявление о коммутаторе JS

код выглядит следующим образом: https://jsfiddle.net/8124qnog/2/

В принципе, я хочу, чтобы первый цикл, чтобы проверить через массив «roleArray» и присвоить значение в «роли» переменной. Он может иметь четыре различных значения:

L, S, J, или А.

Затем я хочу следующее заявление переключатель, чтобы проверить значение «роли» и посмотреть, является ли это L, S, J или A, и присваивать значения переменным.

Например, когда я пытаюсь сделать console.log(aFactor), я получаю неопределенное значение, которое, по-видимому, означает, что мой цикл не работает или оператор switch не закодирован правильно.

Могу ли я это сделать?

Спасибо!

EDIT:

Код:

  //ALGORITHM START 
      for (i = 0, i < 10; i++;) { 
       switch (roleArray[i]) { 
        case "DUO": 
         //assumes top lane duo 
         role = "L"; 
         console.log(role); 
         break; 
        case "DUO_CARRY": 
         //assumes bot lane adc 
         role = "A"; 
         console.log(role); 
         break; 
        case "DUO_SUPPORT": 
         //assumes bot lane support 
         role = "S"; 
         console.log(role); 
         break; 
        case "SOLO": 
         //assumes mid or top solo 
         role = "L"; 
         console.log(role); 
         break; 
        case "NONE": 
         //assumes jungle, check lane 
         role = "J"; 
         console.log(role); 
         break; 
        default 
         role = "L"; 
         break; 
       } 

      switch (role) { 
       case "L": 
        aFactor = 1.00; //kills 
        bFactor = 0.66; //assists 
        cFactor = 0.75; //deaths 
        dFactor = 0.80; //cs 
        eFactor = 0.20; //jungle cs 
        fFactor = 0.55; //counter jungle cs 
        gFactor = 0.50; //cc time 
        break; 
       case "A": 
        aFactor = 1.00; 
        bFactor = 0.10; 
        cFactor = 1.00; 
        dFactor = 1.00; 
        eFactor = 0.20; 
        fFactor = 0.30; 
        gFactor = 0.33; 
        break; 
       case "S": 
        aFactor = 0.20; 
        bFactor = 2.00; 
        cFactor = 0.33; 
        dFactor = 0.10; 
        eFactor = 0.33; 
        fFactor = 0.55; 
        gFactor = 2.00; 
        break; 
       case "J": 
        aFactor = 1.00; 
        bFactor = 1.50; 
        cFactor = 0.75; 
        dFactor = 0.33; 
        eFactor = 1.20; 
        fFactor = 1.60; 
        gFactor = 1.00; 
        break; 
      } 
+2

Обычно принято добавлять код непосредственно к вопросу, чтобы он стоял без посещения стороннего сайта. – spender

+0

уверенная вещь, 1 секунда – Vranvs

+2

Чтобы указать несколько опечаток в вашем коде JSFiddle - 1) Вам не хватает скобок на обеих циклах. 2) В вашем цикле есть 'i> 10' вместо' i <10'. 3) В вашем операторе switch 'default' должен быть' default: '. Надеюсь это поможет. –

ответ

0

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

Во-вторых, поставить двоеточие после дефолта, как

default: 
// your code 

Кроме того, почему бы вам сделать это?

for (i = 0; i > 10; i++) { 
        var pvpFactor = ((aFactor * killArray[i]) + (bFactor * assistArray[i]))/(cFactor * deathArray[i]); 
        var pveFactor = ((dFactor * csArray[i]) + (eFactor * jungleCSArray[i]) + (fFactor * counterJungleCSArray[i]))/(gameTimeArray[i]); 
        var auxFactor = (gFactor * crowdControlArray[i]); 

        var rawHMC = (0.8 * pvpFactor) + (0.4 * pveFactor) + (2.5 * auxFactor) 

        var HMCarray = []; 

Объявление переменной в цикле for без причины? Переменные будут действительны только для i = 9. Зачем вы вставляете его в цикл?