【问题标题】:How to return from object an array of properties and connect them如何从对象返回一组属性并将它们连接起来
【发布时间】:2018-09-30 13:33:00
【问题描述】:

我正在做一个简单的二十一点游戏,但我卡在从对象返回。我的目标是返回所有 52 张卡片,但我得到的只是最后一个数组。

let suits = ['Hearts', 'Clubs', 'Diamonds', 'Spades'],
values = ['Ace', 'King', 'Queen', 'Jack',
    'Ten', 'Nine', 'Eight', 'Seven', 'Six',
    'Five', 'Four', 'Three', 'Two'
];

let deck = [];
function createDeck(deck) {
    for (let i = 0; i < values.length; i++) {
        for (let j = 0; j < suits.length; j++) {
            let card = {
                values: values[i],
                suit: suits[j]
            };
            deck.push(card);
        }
    }
    return deck;
}

function cardName(deck) {
    let name = [];
    for (let i = 0; i < deck.length; i++) {
        name = deck[i].values + " of " + deck[i].suit;
    }
    return name;
}

我尝试了一个对象数组,调试了很多次,双循环,for...in 循环,但都没有奏效。我最好的方法是返回最后一个数组,即“黑桃二”。 非常感谢一些指导

【问题讨论】:

  • name.push(deck[i].values + " of " + deck[i].suit);
  • cardName(deck) 应该做什么?我希望看到像cardName(card) 这样的函数,但不清楚名为cardName 的函数应该对整个卡组做什么。你想要所有卡片名称的数组吗?在这种情况下,只需将循环中的 name = 更改为 name.push(,就像在另一个循环中将卡片推入 deck 一样。

标签: javascript arrays object blackjack


【解决方案1】:

cardName 在 for 循环的每次迭代中都会覆盖“name”(这就是为什么您只看到最后一个值的原因)。使用

name.push(deck[i].values + " of " + deck[i].suit)

【讨论】:

    【解决方案2】:

    在 for 循环中的函数 cardName 中,每次覆盖所有对象,但不向数组添加值。这就是为什么您只收到最后一个值。只需将 name = ... 更改为 name.push(...)

    【讨论】:

      【解决方案3】:

      为了补充上述答案(将name = 切换为name.push( 将解决问题),这也可能是涉足Javascript 功能领域的绝佳机会。

      function cardName(deck) {
          let name = [];
          for (let i = 0; i < deck.length; i++) {
              name = deck[i].values + " of " + deck[i].suit;
          }
          return name;
      }
      

      可以改写为

      function cardName(deck) {
          return deck.map(card => card.values + ' of ' + card.suit);
      }
      

      至少,如果我对如何在此处创建 deck 对象的假设是正确的。

      如果您有兴趣探索这个领域,请随时与我们联系!

      【讨论】:

        猜你喜欢
        • 2013-05-04
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        • 1970-01-01
        • 2020-01-26
        • 2023-03-17
        • 2021-03-10
        • 1970-01-01
        相关资源
        最近更新 更多