向前循环然后从第一个位置继续-1

时间:2017-11-02 19:49:23

标签: javascript

我正在尝试向所有玩家分发卡片。有8个座位。交易可以从任何立场开始。下面的示例显示起始位置为3,这意味着将按照3-4-5-6-7-8-1-2的顺序处理卡片。如果交易从7开始那么它将是7-8-1-2-3-4-5-6等。 我下面的当前循环结束于8.我不确定如何继续。

这是我的代码:

 var a = 3; //this is the variable starting position
        for (i = a; i < 9; i++) {
            var nextavail = $('#seat' + i).find('.back');
            if (nextavail.length > 0) {
                oPosition.seat = 'seat' + i;
                oPosition.cardid = $(nextavail[0]).data('card');
                break;
            }

如果我试试这个:for (i = a; i < 9; i++, i == 8 ? 7 : i = 1)这会带我进入一个无限循环。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

var start = 3;
var max = 9;
for (var i=start; i < max + start; i++) {
  var number = (i > max)? i % max : i;
  console.log(number);
}

这产生3,4,5,6,7,8,9,1,2。

答案 1 :(得分:0)

循环结束最大值i,小于9。如果你想要我 移动3-4-5-6-7-8-9-1-2

 for (j = a-1; j < 8+a ; j++){
   i = j%9 + 1 ;
 // putting the rest of the code of the for loop inside 

 var nextavail = $('#seat' + i).find('.back');
        if (nextavail.length > 0) {
            oPosition.seat = 'seat' + i;
            oPosition.cardid = $(nextavail[0]).data('card');
            break;
        } 


}

答案 2 :(得分:0)

var a = 3; //this is the variable starting position
var seats = 8; // seats count
for (var i = 0; i < seats; i++) {
  var currentPosition = (a + i) === seats ? seats : (a + i) % seats;
  var nextavail = $('#seat' + currentPosition).find('.back');
  if (nextavail.length > 0) {
    oPosition.seat = 'seat' + currentPosition;
    oPosition.cardid = $(nextavail[0]).data('card');
    break;
  }
}

尝试使用模数运算符