繁体   English   中英

循环使用构造函数中的函数

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM