我正在嘗試為紙牌游戲撰寫經銷商函式,我希望該函式在i每次呼叫時都保持其值,以便紙牌堆(player1Deck和player2Deck)變得越來越小直到空。目前,該i值看起來每次呼叫該函式時都會重置,我該如何停止此操作。我對這一切都很陌生。
function dealOut(){
for (let i = 0; i < player1DeckHandcells.length; i ) {
const cell = player1DeckHandcells[i];
cell.appendChild(player1Deck.cards[i].getHTML)
}
for (let i = 0; i < player2DeckHandcells.length; i ) {
const cell = player2DeckHandcells[i];
cell.appendChild(player2Deck.cards[i].getHTML)
}
}
更多資訊
每個dealout電話應該i由7增加這意味著我們是第八屆“牌”(player1Deck.cards[i].getHTML和player2Deck.cards[i].getHTML)在“甲板”(player1Deck和player2Deck),并應該有一個總的28卡21向左走。我希望i通過這些“卡片”來計算值,所以它不會在每次dealout呼叫時重復前 7 個。
uj5u.com熱心網友回復:
您可以使用閉包(保留外部變數副本的函式)。我們可以將該函式用于dealOut. 注意:陣列是零索引的,所以i從0not開始1。
function loop() {
// Maintain a count
let count = 0;
// Return a function that we actually use
// when we call dealOut. This carries a copy
// of count with it when it's returned that we
// can update
return function () {
const arr = [];
// Set i to count, and increase until
// i ia count 7
for (let i = count; i < count 7; i ) {
arr.push(i);
}
console.log(arr.join(' '));
// Finally increase count by 7
count = 7;
}
}
const dealOut = loop();
dealOut();
dealOut();
dealOut();
dealOut();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401021.html
標籤:javascript 数组 for循环
