我正在创建纸牌游戏。我试图循环两个数组。我可以使用for
循环来完成此操作,但是我想使用forEach()
。我没有得到正确的结果。以下是有效的for循环,然后是我尝试过的forEach()
方法:
const suits = ['Heart','Diamond','Spade','Club']
const values=['2','3','4','5','6','7','8','9','K','Q','J','A']
const deck = []
for(i = 0; i<values.length; i++){
for(x =0; x < suits.length; x++){
const card = {value: values[i], suits: suits[x]}
deck.push(card)
}
}
values.forEach((value,x) => {
suits.forEach((suit,i) => {
const card = {value: value[x], suits: suit[i]}
deck.push(card)
})
})
答案 0 :(得分:3)
使用forEach
时,您无需使用索引来访问值,只需从回调参数中获取值即可。但是,如果使用索引,则需要访问values[x], suits[i]
而不是value[x], suit[i]
。
const suits = ['Heart','Diamond','Spade','Club']
const values=['2','3','4','5','6','7','8','9','K','Q','J','A']
const deck = [];
values.forEach((value,x) => {
suits.forEach((suit,i) => {
const card = {value: value, suits: suit}
deck.push(card)
})
})
console.log(deck)
答案 1 :(得分:1)
也许比for
循环或forEach
更好的是使用一种技术,该技术旨在将一个数组逐个索引地更改为另一个数组,例如map
或{{1 }}。
在这里,创建套牌可能是单线的:
flatMap
还要注意,至少在美国,有一个相当悠久的传统,就是将西装从低到高订购为“棍棒,钻石,心形,黑桃”。用英语,这很容易记住,因为它们是按字母顺序排序的。
答案 2 :(得分:0)
在每次迭代中,您可以在card对象中使用forEach回调的参数。
values.forEach(value => {
suits.forEach(suit => {
const card = {value: value, suits: suit}
deck.push(card)
})
})
答案 3 :(得分:0)
您不需要i
或x
,因为value
,suit
具有每个数组的值
const suits = ['Heart','Diamond','Spade','Club']
const values=['2','3','4','5','6','7','8','9','K','Q','J','A']
const deck = []
values.forEach((value) => {
suits.forEach((suit) => {
const card = {value: value, suits: suit}
deck.push(card)
document.getElementById("content").innerHTML += JSON.stringify(card) + "<br />"
})
})
<span id="content"></span>