Así que construí esta función para un juego de cartas, para la característica de "carta de reparto":
const dealCards = () => { for(let i = 0; i < users.length; i++) { let card = cards.pop() playerHands[i].hand.push(card) } }El objetivo principal es insertar un objeto en el
hand: []elemento de playerHands
Player Hands está estructurado así:
0: {id: 0, user: 'Player 1', hand: Array(0), score: 0} 1: {id: 0.9801915170560507, user: 'Player 2', hand: Array(0), score: 0} 2: {id: 0.0006669572315951555, user: 'Player 3', hand: Array(0), score: 0} 3: {id: 0.5767750038678146, user: 'Player 4', hand: Array(0), score: 0} 4: {id: 0.6448035494497826, user: 'Player 5', hand: Array(0), score: 0}y el elemento que estoy tratando de empujar a la mano así:
{suits: '♦', value: '9'} El problema que tengo es que, en lugar de ejecutar el ciclo for e insertar un nuevo elemento para cada usuario (basado en el índice [i] ), inserta esto para cada usuario:
0: {suits: '♦', value: 'K'} 1: {suits: '♦', value: 'Q'} 2: {suits: '♦', value: 'B'} 3: {suits: '♦', value: '10'} 4: {suits: '♦', value: '9'}Aquí hay un ejemplo:
Digamos que hay 5 jugadores.
El bucle se ejecuta 5 veces.
Se incrementa i gusta se supone que debe.
Pero por alguna razón, en lugar de tener una tarjeta diferente para cada usuario, obtengo las 5 tarjetas de la ventana emergente para cada usuario.
Entonces cada usuario obtiene las mismas 5 cartas en su mano
Aquí hay un ejemplo de lo que veo en el navegador:
No sé por qué está haciendo esto, ¿alguien tiene una idea?
No conozco la matriz de users , pero asumiendo que tiene la misma longitud que la matriz playerHands , entonces uso la matriz playerHands para la iteración.
const dealCards = () => { for( let i = 0; i < playerHands.length; i++ ) { let card = cards.pop() playerHands[i].hand.push(card) } } let playerHands = [ {id: 0, user: 'Player 1', hand: Array(0), score: 0}, {id: 0.9801915170560507, user: 'Player 2', hand: Array(0), score: 0}, {id: 0.0006669572315951555, user: 'Player 3', hand: Array(0), score: 0}, {id: 0.5767750038678146, user: 'Player 4', hand: Array(0), score: 0}, {id: 0.6448035494497826, user: 'Player 5', hand: Array(0), score: 0} ] let cards = [ {suits: '♦', value: 'K'}, {suits: '♦', value: 'Q'}, {suits: '♦', value: 'B'}, {suits: '♦', value: '10'}, {suits: '♦', value: '9'} ] dealCards() console.log(playerHands) // to show the result