jQuery で 8 枚のカードをランダムに配ろうとしていますが、8 枚のカードが配られた後にコードを実行すると、ブラウザがクラッシュします。while ループの 144 行目に問題があると表示されます。この while ループを作成して、8 枚の一意のランダム カードを配りました。
var n = 0
var card = [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}, {id: 7}, {id: 8}];
var arr = [];
var n = Math.floor((Math.random() * 7) + 1);
doOne(0, n);
function doOne(index, rand) {
var thisCard = card[index];
var p = $("#hand1_" + thisCard.id);
var offset = p.offset();
var zindex = p.css('z-index');
if (thisCard) {
$('#card' + rand).css('z-index', zindex);
$('#card' + rand).animate({
top: offset.top,
left: offset.left,
},
function() {
arr.push(rand);
k = Math.floor((Math.random() * 8) + 1);
// line 144 i have a problem here
while (exist(arr, k) == true || arr.length == 8) {
k = Math.floor((Math.random() * 8) + 1);
}
doOne(index + 1, k);
});
}
}
function exist(arr, obj) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == obj)
return true;
}
}
});
どんな助けでも大歓迎です。ありがとう。