Example: Shuffle Deck of Cards
// program to shuffle the deck of cards
// declare card elements
const suits = ["Spades", "Diamonds", "Club", "Heart"];
const 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}`)
}
Output
The first five cards are: 4 of Club 5 of Diamonds Jack of Diamonds 2 of Club 4 of Spades
In the above program, the suits and values variables contain the elements of a card.
The nested for loop is used to create a deck of cards.
- We need to create a deck of cards containing each suits with all the values. So the first
forloop iterates over all the suits and the secondforloop iterates over the values. Then, the elements are created and added to thedeckarray. - The array elements are stored as an object as:
[{Value: "Ace", Suit: "Spades"},{Value: "2", Suit: "Spades"}.....]
The second for loop is used to shuffle the deck of cards.
- Math.random() generates a random number.
- Math.floor() returns the number by decreasing the value to the nearest integer value.
- A random number is generated between 0 and 51 and two card positions are swapped.
The third for loop is used to display the first five cards in the new deck.