簡體   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