给定大于阵列的偏移量,在阵列上无缝循环,向前或向后循环

Kay*_*ayo 1 javascript arrays loops

这是我之前提出的类似问题(在数组中向前和向后选择X量,如果需要,循环到开始和结束)

但我无法将答案适应我想要解决的另一个问题.

给定一个任意数组和一个当前索引

[a, b, c, d, e, f, g, h, i, j, k]
Run Code Online (Sandbox Code Playgroud)

让我们说现在的指数是0(a)

我需要找到一个新的索引,给定一个偏移量n(假设为30,它也可能是负向后退).这样它就会循环遍历数组,从它开始时一直到结束(或者如果你向后循环那么从最后继续)并返回新的数组索引.

我已经设法调整了类似问题的答案来向前走阵列,但是当我尝试将其更改为向后走时它会中断.

function crawlArrayForwards(array, index, n){
    var finalIndex;
    for (var i = index, len = array.length; i <= index + n; i++) {
        finalIndex = (i + len) % len;
    }
    return finalIndex;
}
Run Code Online (Sandbox Code Playgroud)

Aio*_*ros 6

看,你不需要for循环或任何东西.你只需要用它的符号添加你的号码并取模数.

function crawlArray(array, index, n) {
    return ((index + n) % array.length + array.length) % array.length;
}
Run Code Online (Sandbox Code Playgroud)

就是这样.应该使用n的正值或负值.