Создайте окружающие числа, оберните, если слишком большой - PullRequest
0 голосов
/ 28 февраля 2019

Как я могу генерировать числа таким образом?Я хочу создать функцию generate (current, limit, count):

  • current - центральное число в массиве
  • limit - наибольшее число до переноса
  • count - например, 2 означаетдва числа до и после текущего номера.

Эта функция может возвращать массив, например:

[ current - n, current - 1, current, current + 1, current + n ] (n <= count)

Например:

generate(5, 10, 2)

Возвращает:

[3, 4, 5, 6, 7]

Но generate(1, 5, 2) должен вернуть [4, 5, 1, 2, 3 ]

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

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

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

function generate(current, limit, count) {
    return Array.from(
        { length: count * 2 + 1 },
        (_, i) => (v => v <= 0 ? v + limit : v)
                  ((current + i - count + limit - 1) % limit + 1)
    );
}

console.log(generate(5, 10, 2).join(' '));  // 3 4 5 6 7
console.log(generate(1, 5, 2).join(' '));   // 4 5 1 2 3
console.log(generate(1, 2, 10).join(' '));  // 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
0 голосов
/ 28 февраля 2019

Я думаю, что вы можете сделать это очень просто, используя список или массив и цикл for.

для списка, если вы инициализируете его первыми двумя числами, которые вы хотите current-n и current-1 просто используйте цикл, чтобы добавить все остальное.

myList = [current-n, current-1]

для i в диапазоне (current, limit, count): myList.append(я)

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