【发布时间】:2016-08-08 06:31:19
【问题描述】:
目标
我有 60 个曲棍球 .players。有 10 名守门员(球员编号 1-10)、20 名防守队员(球员编号 11-30)和 30 名前锋(球员编号 31-60)。单击时,按钮.btn--random 应随机将类is-active 添加到two goalie, six defensemen and twelve forwards 并删除类is-inactive
问题
-
当我使用一系列 for 循环和
Math.floor(Math.random())的组合有时是随机的 生成的数字是相同的,这不可能发生,因为每个玩家都是 独一无二,只能选择一次。我考虑过
forEach或indexOf来帮助解决这个问题, 但我对生成的数字将如何添加课程感到非常迷茫 的is-active到 60 列表中的适当玩家 玩家。 应该在 HTML 中修改这一行<div class="picked is-inactive">
scripts.js - 这就是我已经做到的程度
function randomSelection(min, max) {
$(".btn--random").on("click", function(){
// There are 60 hockey players in total
// The first player is 1, the second player is 2 and so on ...
// There are 10 goalies, 20 defencemen and 30 forwards
// Generate two numbers between 1-10
for (var i = 0; i < 2; i++) {
var randTwo = Math.floor(Math.random()*10 + 1);
console.log(randTwo);
if (randTwo === randTwo) {
}
};
// Currently generates six numbers between 1-20
// Should generate six numbers between 11-30
for (var i = 0; i < 6; i++) {
var randSix = Math.floor(Math.random()*20 + 1);
console.log(randSix);
if (randSix === randSix) {
}
};
// Currently generates twelve numbers between 1-30
// Should generate two numbers between 31-60
for (var i = 0; i < 6; i++) {
var randTwelve = Math.floor(Math.random()*30 + 1);
console.log(randTwelve);
if (randTwelve === randTwelve) {
}
};
// Store the 20 randomly generated numbers into an array?
var array = []
// Add the class `is-active` based on the numbers generated
var player = $(".player");
var rand = Math.floor(Math.random()* 60);
player.eq(rand).addClass("is-active");
});
} randomSelection();
index.html (sn-p)
<button class="btn btn--random">Random</button>
<div class="player player--goalie year--1990">
<div class="tooltip tooltip--tall">
<p class="tooltip__name">Brian Elder</p>
<p class="tooltip__hometown"><span>Hometown:</span> Oak Lake, Man.</p>
<p class="tooltip__years"><span>Years Played:</span> 1992-1997</p>
<div class="tooltip__stats--inline">
<div class="stats__group stats--games">
<p class="stats__header">GP</p>
<p class="stats__number stats__number--games">110</p>
</div>
<div class="stats__group stats--goalsag">
<p class="stats__header">GA</p>
<p class="stats__number stats__number--goalsag">2.00</p>
<p class="stats__number">3.12</p>
<p class="stats__number">3.46</p>
<p class="stats__number">2.70</p>
</div>
<div class="stats__group stats--savep">
<p class="stats__header">SAV%</p>
<p class="stats__number stats__number--savep">.909</p>
<p class="stats__number">.886</p>
<p class="stats__number">.884</p>
<p class="stats__number">.906</p>
</div>
<div class="stats__group stats--shutouts">
<p class="stats__header">SO</p>
<p class="stats__number">0</p>
<p class="stats__number">0</p>
<p class="stats__number stats__number--shutouts">3</p>
<p class="stats__number">2</p>
</div>
</div> <!-- tooltip__stats--inline -->
</div> <!-- tooltip -->
<div class="player__headshot player--elder">
<div class="picked is-inactive"><i class="fa fa-star" aria-hidden="true"></i></div>
</div>
<p class="player__name">Brian Elder</p>
<p class="player__position">Goalie</p>
</div>
【问题讨论】:
-
你能使用像lodash或underscore这样的外部库吗?如果您愿意,可能值得创建代表守门员、防守队员和前锋的三个阵列。完成此操作后,使用 lodash 或下划线对这些数组进行洗牌。现在你需要做的就是 pop() 出最后一个人和你;你的随机播放器没有重复
标签: javascript jquery for-loop random floor