【问题标题】:Merging two arrays into an object [duplicate]将两个数组合并为一个对象[重复]
【发布时间】:2015-05-04 23:38:47
【问题描述】:

所以我试图将两个数组合并为一个对象。更具体地说,我正在使用 JavaScript 创建一副纸牌。我已经创建了两个数组(如下所示)并正在寻找有关如何合并它们的帮助,以便新对象的格式如下{suit:'hearts',value:'A'}。我相信我需要做一个 for 循环,但无法使其工作。有人有什么建议吗?

// ...试图在这里合并两个数组...

  function deck_o_cards() {
  var values = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A'];
  var suits = ['hearts', 'diamonds', 'clubs', 'spades'];

  var cards = [ ];
    for(i=0, i< suits.length, i++){
        var newSuit = suits[i];
        for(a=0; a< values.length, a++) {
            var newValue= values[a];
            newArray=[newSuit, newValue];
            cards.push(newArray);
        }
    }
}

【问题讨论】:

  • 循环是一个好的开始,你能告诉我们你尝试了什么吗?顺便问一下,这是作业吗?如果是,最好将其指定为文本的一部分,以便人们更好地指导您。
  • 您添加的循环代码有问题吗?你想要multidimensional array吗?
  • 感谢大家的帮助。这是一个家庭作业问题。我现在已经能够得到它来创建甲板。再次感谢

标签: javascript arrays object


【解决方案1】:

您将需要使用循环遍历 values 数组,然后在每次迭代中还循环遍历 suits 数组。您将需要两个不同的索引来使nested loops 工作。

数组索引为零,因此索引将从零开始,并在索引到达length of the array时停止。

这是一个嵌套循环的示例,但您应该使用数组长度属性而不是 13 和 4。

for(var i = 0; i < 13; i++) {
  for(var j = 0; i < 4; i++) {
    ...
  }
}

在内部循环中,您可以使用单独的索引使用每个数组中的值创建您的卡片对象,然后通过将其分配给 cards[cards.length] = { } 将其添加到您的卡片数组中,这会在数组末尾添加一个新项目。

您也可以使用Array.map()Array.push() 函数来替换循环和赋值操作来完成同样的事情。

【讨论】:

    【解决方案2】:

    你快到了。问题在于循环内的代码。当您真正需要一个对象时,您正在创建一个数组。在你的循环中试试这个:

    var newValue = values[a];
    var newCard = {suit: newSuit, value: newValue};
    cards.push(newCard);
    

    还要注意使用var newCard 而不是newArrayvar 避免将对象添加到全局范围。

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 2011-10-18
      • 2021-11-12
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 2020-05-16
      相关资源
      最近更新 更多