从两个数组生成所有可能的字符串组合(javascript)



我目前有两个数组,如下所示:

let suits = ['♣', '♦', '♥', '♠'];
let cards = ['A','2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];

我想把这些组合起来,包含一个52个字符串的数组,以及所有可能的卡片组合。例如:

['A♣', 'A♦', 'A♥', 'A♠', '2♣' ...]

我知道我可以写两个嵌套的";对于循环";并将其凹入,但有更有效的方法吗?

谢谢!

您可以使用Array.prototype.flatMap()方法。

const suits = ['♣', '♦', '♥', '♠'];
const cards = ['A','2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
const ret = cards.flatMap((x) => suits.map((y) => `${x}${y}`));
console.log(ret);

您可以这样做:

const suits = ['♣','♦','♥','♠']
,   cards = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
;
const deck = cards.reduce((d,c)=>[...d,...suits.map(s=>s+c)],[])
console.log( deck )
.as-console-wrapper { max-height: 100% !important; top: 0; }

或者:

const deck = Array.from({length:52},(_,i)=>suits[Math.floor(i/13)]+cards[i%13])

相关内容

最新更新