我正在尝试向所有玩家分发卡片。有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)
这会带我进入一个无限循环。有什么想法吗?
答案 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;
}
}
尝试使用模数运算符