Modulo von negativen Zahlen [duplizieren]

Mögliches Duplizieren:
Mod der negativen Zahl schmilzt mein Gehirn!

Ich habe mich gefragt, ob es einen schöneren Algorithmus für das gibt, was ich versuche zu tun:

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

Ich hatte die Idee das

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;
    }

Gibt es einen schöneren Weg, dies zu tun?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage