我正在阅读Codecademy关于使用Javascript构建二十一点游戏的课程。
我无法想出代码来放入for循环。我应该在Hand构造函数中编写一个“score”方法。它应循环遍历Hand中的所有卡片,将“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;
}
};
};
答案 0 :(得分:0)
这样的事情应该有效:
this.score = function() {
return handArray.reduce( function( memo, val){
return memo + val.getValue();
});
};
答案 1 :(得分:0)
我认为你需要在循环之外返回得分,如下:
this.score = function() {
var sum;
for (var i = 0; i < handArray; i++) {
sum += handArray[i].getValue();
}
return sum;
};
答案 2 :(得分:0)
这解决了它。谢谢你的帮助!
this.score = function(){
var sum =0;
for(var i =0; i<handArray.length; i++){
sum += handArray[i].getValue();
};
return sum;
};