使用模数运算符或Js通过数组递增和递减

时间:2017-03-31 04:00:27

标签: javascript increment modulus

我能够弄清楚如何通过另一个问题增加数组读数。现在我似乎无法弄清楚如何去除因为我的值被设置回0.我试图避免循环。

我希望实现的顺序是:

增量----“/”,“/ about”,“/ list”< - list是结束。减少只是倒带。每次减少只需要退一步。

let i = 0;    
let stuff =["/", "about","list"];

next() {
    this.props.dispatch(increaseCounter())
    i = (i+1)%stuff.length;
  }
  prev() {
    this.props.dispatch(decreaseCounter())
    i = (i-1)%stuff.length; <------This gets wonky once I reach the end of my array.
  }

2 个答案:

答案 0 :(得分:1)

如果您希望next()i0以及2之间增加prev(),请在20之间递减您可以使用以下内容:

next() {
    this.props.dispatch(increaseCounter());
    i = Math.min(i + 1, stuff.length - 1);
}

prev() {
    this.props.dispatch(decreaseCounter());
    i = Math.max(i - 1, 0);
}

答案 1 :(得分:1)

%的问题在于它是一个具有截断除法的余数运算符,而不是具有分层除法的modulo运算符。当除数(i-1)变为负数时,结果也是负数。你可以使用

if (--i < 0) i = stuff.length - 1;

i = (i + stuff.length - 1) % stuff.length;

代替(仅适用于预期范围内i的输入值)