Возможный дубликат:
Мод отрицательного числа тает мой мозг!
Мне было интересно, был ли более хороший алгоритм для того, что я пытаюсь сделать:
wrapIndex(-6, 3) = 0 wrapIndex(-5, 3) = 1 wrapIndex(-4, 3) = 2 wrapIndex(-3, 3) = 0 wrapIndex(-2, 3) = 1 wrapIndex(-1, 3) = 2 wrapIndex(0, 3) = 0 wrapIndex(1, 3) = 1 wrapIndex(2, 3) = 2 wrapIndex(3, 3) = 0 wrapIndex(4, 3) = 1 wrapIndex(5, 3) = 2
Я придумал
function wrapIndex(i, i_max) { if(i > -1) return i%i_max; var x = i_max + i%i_max; if(x == i_max) return 0; return x; }
Есть ли лучший способ сделать это?