[英]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.