将两个数组组合成值对以制作一副完整的纸牌

Combining two arrays into value pairs to make a full deck of cards

我正在尝试组合两个数组来制作一副完整的纸牌,如下所示:

[{card: "A", suit: "d"}, {card: "A", suit: "c"}, {card: "A", suit: "s"},    {card: "A", suit: "h"}, {card: "2", suit: "d"}.....]

.. 这是我目前所拥有的:

function newDeck(ranks, suits){
var ranks = [ "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]

var suits = ["d", "c", "s", "h"]

var deck= []

  for (i = 0; i < suits.length; i++) {

  for (j = 0; j < ranks.length; j++) {

      this.deck[ranks.length*i+j] = new Card(ranks[j], suits[i]);
  }
} console.log(newDeck)
}

如果将两个数组组合在一起,您将得到一个数组:

["A","2","3","4","5","6","7","8","9","10","J","Q","K","d","c","s","h"]

这并不代表一副完整的纸牌,而像现在这样使用嵌入式 for 循环打印纸牌,所以我认为您不只是想将一个数组附加到另​​一个数组。你能提供更多关于你想用数组做什么的上下文吗?

但是,要回答您的问题:如果您想追加两个数组,您可以使用:

var appendedArray = ranks.concat(suits);

这将导致上面提到的数组

关于您更新的问题:您被称为 "new Card(ranks[j], suits[i]);" 您是否制作了 Card 构造函数以使其有效?如果是这样,如果构造函数与您的使用方式相匹配,代码应该是正确的。发布构造函数的代码以及更新您面临的问题会很有帮助

使用 Array.forEach 您可以执行以下操作:

var ranks = [ "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
var suits = ["d", "c", "s", "h"];
var deck= [];
suits.forEach(function(suit){
  ranks.forEach(function(rank){
    deck.push(new Card(rank, suit));
  })
});

编辑:如果您还没有编写 Card 方法:

function Card(rank, suit){
  this.card = rank;
  this.suit = suit;
}