Проверьте, используется ли один элемент в массиве, если это так, используйте другой элемент - PullRequest
0 голосов
/ 31 октября 2018

Как проверить, используется ли один элемент, и, если да, использовать другой элемент в операторах Switch Case.

//Input
function myFunction() {
  
var myArray = ["60","50", "20", "30", "15", "10"];
  var randomJumpingJacks = myArray[Math.floor(Math.random()*myArray.length)];
  var randomCrunches = myArray[Math.floor(Math.random()*myArray.length)];
   
    var workOut = document.getElementById("myInput").value;
  
  
var text = "";
for(const char of workOut.toUpperCase()){
    switch(char) {
        case "A":
        case "I":
        case "N":
        case "X":
            text += randomJumpingJacks;
            text += " Jumping Jacks";
                  
        break;
        case "B":
        case "J":
        case "Q":
        case "Y":
            text += randomCrunches;
            text += " Crunches";       
          break;
          case " ":
            /*text += " break ";*/
        break;
       
        default:
        text += "I have never heard of that fruit...";    
    }
  text +=" "
  text +="<br>"
}
  
    document.getElementById("excercise").innerHTML = text;
}
<!DOCTYPE html>
<html>
<body>

<p>Input some characters  and click the button.</p>
<p>Your excericse routine will display based on your input.</p>

<input id="myInput" type="text">

<button onclick="myFunction()">Try it</button>
<p>
  <span id="reps"></span>
  <span id="excercise"></span>
  </p>

</body>
</html>

Пример: Я набрал: ABBY Я ожидаю, что это выведет:

10 прыжков

15 хрустов

10 хрустов

20 хрустов

Я не уверен, что использую правильную терминологию, но я собираюсь обозначить случаи A, I, N, X как Прыгающий Блок, а случаи B, J, Q, Y как Блок Хрустов.

Если вызываемые символы из одного и того же блока, существует тенденция отображать одно и то же случайное число.

На втором Char (B) блока Crunches он, естественно, выдает 15, но, поскольку он используется для первого char (также B), я бы хотел, чтобы он использовал какой-то другой элемент,

и третий символ (Y) также находится в блоке Crunches, я бы хотел использовать другой элемент, который отличается от первых двух элементов и т. Д., И повторять через 4 раза.

Мне бы очень хотелось узнать, что вы думаете.

1 Ответ

0 голосов
/ 31 октября 2018

Вам нужно переместить случайную логику внутри цикла for. Чтобы получить новое случайное число для каждой буквы в строке, вам нужно переназначать значение каждый раз, когда проходит цикл. Смотрите код ниже.

function myFunction() {
  
var myArray = ["60","50", "20", "30", "15", "10"];

   
    var workOut = document.getElementById("myInput").value;
  
  
var text = "";
for(const char of workOut.toUpperCase()){
  var randomJumpingJacks = myArray[Math.floor(Math.random()*myArray.length)];
  var randomCrunches = myArray[Math.floor(Math.random()*myArray.length)];

    switch(char) {
        case "A":
        case "I":
        case "N":
        case "X":
            text += randomJumpingJacks;
            text += " Jumping Jacks";
                  
        break;
        case "B":
        case "J":
        case "Q":
        case "Y":
            text += randomCrunches;
            text += " Crunches";       
          break;
          case " ":
            /*text += " break ";*/
        break;
       
        default:
        text += "I have never heard of that fruit...";    
    }
  text +=" "
  text +="<br>"
}
  
    document.getElementById("excercise").innerHTML = text;
}
<!DOCTYPE html>
<html>
<body>

<p>Input some characters  and click the button.</p>
<p>Your excericse routine will display based on your input.</p>

<input id="myInput" type="text">

<button onclick="myFunction()">Try it</button>
<p>
  <span id="reps"></span>
  <span id="excercise"></span>
  </p>

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...