Для Loop vs. Do ... Пока - PullRequest
       5

Для Loop vs. Do ... Пока

0 голосов
/ 19 сентября 2018

Фон

Я только изучаю JavaScript, и я подумал, что хорошим способом начать было бы написать мой собственный ролик для игры в кости для RPG, в которую я играю .В этой игре вы бросаете несколько шестигранных кубиков, где каждые 4 или 5 стоят одного успеха, а каждые 6 - 2 успеха.

У меня есть функция, которая бросает кости и пропускает броски черезмассив, в другую функцию, которая HTML-кодирует его для отображения на веб-странице.

Код

Для того, чтобы бросить кости, у меня есть то, что я считаю стандартной функцией ролика игры в кости (sides переменная из-за того, что иногда вы можете бросать кости, у которых есть стороны, отличные от 6, поэтому я сделал эту функцию пригодной для всех бросков кубиковфункция вызывает эту rollDice() функцию несколько раз и помещает каждый результат в массив.

Это основная функция, где number - количество бросаемых костей:

function dice(number) {
  let results = [];
  for (i=0; i<number; i++){
    results.push(rollDice(6));
  }
  return results;
}

Однако с тех пор я узнал о цикле do…while и сумел его рефакторинг таким образом:

function dice(number) {
  let results = [];
  do {
    results.push(rollDice(6));
  } while (results.length < number)
  return results;
}

Актуальный вопрос

Какой цикл является более «правильным» или лучшимпрактиковаться в использовании?for или do…while?

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете просто использовать простой цикл while, который эквивалентен вашему примеру цикла for.

function dice(number) {
  let results = [];
  while (results.length < number) {
    results.push(rollDice(6));
  }
  return results;
}

Мне нравится читаемость этого лучше всего (отчасти потому, что он не создаетдополнительная переменная итератора), но цикл for тоже подойдет.Цикл do...while работает, но дополнительный синтаксис не нужен.

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