示例:随机洗牌
// program to shuffle the deck of cards
// declare card elements
let suits = ["Spades", "Diamonds", "Club", "Heart"];
let values = [
"Ace",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"Jack",
"Queen",
"King",
];
// empty array to contain cards
let deck = [];
// create a deck of cards
for (let i = 0; i < suits.length; i++) {
for (let x = 0; x < values.length; x++) {
let card = { Value: values[x], Suit: suits[i] };
deck.push(card);
}
}
// shuffle the cards
for (let i = deck.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * i);
let temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
console.log('The first five cards are:');
// display 5 results
for (let i = 0; i < 5; i++) {
console.log(`${deck[i].Value} of ${deck[i].Suit}`)
}
输出
The first five cards are:
4 of Club
5 of Diamonds
Jack of Diamonds
2 of Club
4 of Spades
在上述程序中, 西服和值变量包含卡的元素。
嵌套的for
循环用于创建一副纸牌。
- 我们需要创建一副纸牌,其中包含具有所有值的每套西装 。因此,第一个
for
循环遍历所有西装 ,第二个for循环遍历值 。然后,创建元素并将其添加到deck
数组。 - 数组元素作为对象存储为:
[{Value: "Ace", Suit: "Spades"},{Value: "2", Suit: "Spades"}.....]
第二个for
循环用于洗牌。
-
Math.random()
生成一个随机数。 -
Math.floor()
通过将值减小到最接近的整数值来返回数字。 - 在0到51之间生成一个随机数,并且交换两个卡位置。
第三个for
循环用于显示新卡座中的前五张卡。