I am working on a card game and I need to set the player who deals each hand.
I have two arrays, one stores the hands and the other stores the players.
hands = [ { handNumber: 1, dealer: null }, { handNumber: 2 dealer: null } ... ] players = ["Player 1", "Player 2", "Player 3", "Player 4"]
My goal is to assign a dealer to each hand in a consecutive way until reaching the max number of hands. For example:
Hand 1: Player 1 Hand 2: Player 2 Hand 3: Player 3 Hand 4: Player 4 Hand 5: Player 1 And so on
I tried different loops, but I am really stuck with this:
hands.forEach(hand => { for(let i = 0; i < players.length; i++) { hand.dealer = players[i] } })
Any suggestions? Any help will be much appreciated.
Advertisement
Answer
You can use % in order to return back to never go out of range of the player’s array and always return to the start again:
For example: 0 % 3 == 0
1 % 3 == 1
2 % 3 == 2
3 % 3 == 0
4 % 3 == 1
…
hands.forEach((hand, index) => { hands[index] = players[index % players.length]; })
If you are interested you can read more about js operators here: https://www.w3schools.com/js/js_operators.asp