[英]For-Loop using function from a Constructor
我正在學習Codecademy的課程,內容是使用Javascript構建二十一點游戲。
我在提出將代碼放入for循環時遇到麻煩。 我應該在Hand構造函數中編寫一個“ score”方法。 它應遍歷一手牌中的所有卡,將對每個卡的“ getValue”調用的結果相加並返回該和。
有人可以幫我嗎? 謝謝。
這是我的嘗試,相關代碼位於底部的for循環內:
// Card Constructor
function Card(s, n) {
var suit = s;
var number = n;
this.getSuit = function() {
return suit;
};
this.getNumber = function() {
return number;
};
this.getValue = function() {
if (number >= 10) {
return 10;
} else if (number === 1) {
return 11;
} else {
return number;
}
};
};
//deal function
var deal = function() {
var randNum = Math.floor(Math.random() * 13) + 1;
var randSuit = Math.floor(Math.random() * 4) + 1;
console.log(randNum, randSuit);
return new Card(randSuit, randNum);
};
function Hand() {
var handArray = [];
handArray[0] = deal();
handArray[1] = deal();
this.getHand = function() {
return handArray;
};
this.score = function() {
var sum;
for (var i = 0; i < handArray; i++) {
sum += handArray[i].getValue;
return sum;
}
};
};
好吧,這樣的事情應該工作:
this.score = function() {
return handArray.reduce( function( memo, val){
return memo + val.getValue();
});
};
我認為您需要在循環外返回得分,如下所示:
this.score = function() {
var sum;
for (var i = 0; i < handArray; i++) {
sum += handArray[i].getValue();
}
return sum;
};
這樣就解決了。 謝謝你的幫助!
this.score = function(){
var sum =0;
for(var i =0; i<handArray.length; i++){
sum += handArray[i].getValue();
};
return sum;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.