【问题标题】:Too many elements inserted on push in for loop推入 for 循环时插入的元素过多
【发布时间】:2021-12-28 15:59:01
【问题描述】:

所以我为纸牌游戏构建了这个功能,用于“发牌”功能:

const dealCards = () => {
    for(let i = 0; i < users.length; i++) {
        let card = cards.pop()
        playerHands[i].hand.push(card)
    }
}

它的主要目的是插入一个对象

hand: []

playerHands 元素

Player Hands 的结构如下:

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}

我试图像这样推入手中的元素:

{suits: '♦', value: '9'}

我遇到的问题是,它不是通过 for 循环运行并为每个用户插入一个新元素(基于 [i] 索引),而是为每个用户插入这个:

0: {suits: '♦', value: 'K'}
1: {suits: '♦', value: 'Q'}
2: {suits: '♦', value: 'B'}
3: {suits: '♦', value: '10'}
4: {suits: '♦', value: '9'}

这是一个例子:

假设有 5 个玩家。

循环运行 5 次。

它按预期递增 i

但由于某种原因,我没有为每个用户提供一张不同的卡,而是为每个用户从弹出窗口中获取所有 5 张卡。

所以每个用户都拿到了相同的 5 张牌

这是我在浏览器中看到的示例:

browser sample

我不知道为什么会这样,有人知道吗?

【问题讨论】:

  • 您如何确切初始化.hand 数组,尤其是您确定它们是单独的数组吗?

标签: javascript arrays reactjs for-loop object


【解决方案1】:

我不知道users 数组,但假设它的长度与playerHands 数组相同,那么我使用playerHands 数组进行迭代。

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

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多