将for循环转换为forEach

时间:2019-06-10 12:39:59

标签: javascript

我正在创建纸牌游戏。我试图循环两个数组。我可以使用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)
})
})

4 个答案:

答案 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)

您不需要ix,因为valuesuit具有每个数组的值

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>