我正在尝试使用2个数组创建一副纸牌。一个数组是西服,另一个数组是值。我的想法是使用for循环遍历数组以创建52张卡片组。但是,我似乎无法正确理解语法。
我尝试使用forEach
方法。
var deck = [];
var suits = ["diamonds", "spades", "hearts", "clubs"];
var values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
suits.forEach(function(suits) {
deck.push(suits);
deck.push(values);
});
console.log(deck)
答案 0 :(得分:4)
您需要两个循环,一个在西装上,一个在面部值上,例如
var deck = [];
var suits = ["diamonds", "spades", "hearts", "clubs"];
var values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
suits.forEach(function(suit) {
values.forEach(function(value) {
deck.push(`${value} of ${suit}`);
});
});
console.log(deck);
或者,您可以使用flatMap
:
var suits = ["diamonds", "spades", "hearts", "clubs"];
var values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
var deck = suits.flatMap(suit => values.map(value => `${value} of ${suit}`));
console.log(deck);
请注意:某些较旧的浏览器不支持flatMap
,因此您可能需要使用polyfill。
仅出于演示目的,您还可以使用Ramda的map
和xprod
:
var suits = ["diamonds", "spades", "hearts", "clubs"];
var values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
var deck = R.map(([suit, value]) => `${value} of ${suit}`, R.xprod(suits, values));
console.log(deck);
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>
答案 1 :(得分:1)
尝试
suits.forEach(s=> values.forEach(v=> deck.push(v+' of '+s)));
var deck = [];
var suits = ["diamonds", "spades", "hearts", "clubs"];
var values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
suits.forEach(s=> values.forEach(v=> deck.push(v+' of '+s)));
console.log(deck);
答案 2 :(得分:0)
var deck = new Array();
var suits = ["diamonds", "spades", "hearts", "clubs"];
var values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
function makeDeck()
{
for(var i = 0; i < suits.length; i++)
{
for(var x = 0; x < values.length; x++)
{
var card = {Value: values[x], Suit: suits[i]};
deck.push(card);
}
}
return deck;
}
makeDeck();
答案 3 :(得分:0)
我建议这样的事情:
var deck = [];
var suits = ["diamonds", "spades", "hearts", "clubs"];
var values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
suits.forEach(function(suit) {
values.forEach(function(value) {
deck.push([suit, value]);
});
});
console.log(deck)