将两个数组组合成值对以制作一副完整的纸牌
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;
}
我正在尝试组合两个数组来制作一副完整的纸牌,如下所示:
[{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;
}