Функция, которая дает число, возвращает число в диапазоне - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь написать функцию, для которой задано число, оно возвращает число в диапазоне от 1 до 12.

Так, например, если на входе 1, на выходе 1, если на входе 12, на выходе 12, если на входе 13, выход 1, если на входе 14, выход 2, если вход 24, выход 12.

Я уже пробовал это:

function toRange(number) {
  if (number > 12) { 
    return number % 12
  }

  return number
}

Но мне интересно, есть ли способ, которым я могу решить это, не выполняя условных выражений. Я думал о выполнении return (число + 12)% 12, но это не сработало бы, если число равно 12, потому что оно вернет 0.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

может быть что-то вроде этого:

function toRange(number) {
  if (number > 12) { 
    if (number % 12 === 0)
      return number - 12;
    return number % 12
  }
  return number
}
0 голосов
/ 08 ноября 2018

Можно также думать как - Получите остаток от числа 12 и верните 12, если остаток равен 0.

function toRange(number) {
    return number % 12 || 12;
}

for (var i = 1; i <= 24; i++) console.log(i, toRange(i));
0 голосов
/ 08 ноября 2018

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

function toRange(number) {
    return (number - 1) % 12 + 1;
}

var i;

for (i = 1; i <= 24; i++) console.log(i, toRange(i));
.as-console-wrapper { max-height: 100% !important; top: 0; }
...