1. ホーム
  2. javascript

[解決済み] JavaScriptの基本です。カードを数える - 文字列を使ったカードカウント機能

2022-02-08 09:34:44

質問

カード機能については、何度も説明を受けており、理解しています。知らない人のために説明すると、私の関数はcardパラメータ(数値または文字列)を受け取ります。2,3,4,5,6は増加し、7,8,9は0を維持し、10, J, Q, K, Aは減少させる。私の関数は、現在のカウントと、カウントが正なら "Bet"、負なら "Hold" という文字列を返します。

そして、FreeCodeCampは私のソリューションが技術的に彼らの条件を満たしているとして、それを受け入れました。しかし、この関数について質問があります。

var count = 0;

function cc(card) {
  if (card >= 2 && card <= 6) {
    count++;
  } else if (card >= 7 && card <= 9) {
    count += 0;
  } else {
    count--;
  }

  if (count <= 0) {
    return count + " Hold";
  } else {
    return count + " Bet";
  }
}

console.log(cc(2));
console.log(cc(3));
console.log(cc(7));
console.log(cc('K'));
console.log(cc('A'));

見ての通り、最初の条件はかなりシンプルで定義しやすく、else ifもそうです。3番目のケースでは、数字と文字列の両方が関係します。これは、ccに任意の文字列を入れると、デクリメントされるということではないのでしょうか?2と6、7と9の間でないものは、自動的にデクリメントされるということですか?カードでないもの、リストの値でないものをユーザーが入力してもですか?

しかし、カードが10、J、Q、K、Aのいずれかである場合にのみ条件を実行し、他の値ではないことを確認するために、ステートメントを条件づける良い方法はありませんか?

どのように解決するのですか?

現在のelseを変更して、入力が有効でないカードの場合はエラーメッセージを返すか即座に返すようにし、別のelseを追加して10~Aceをチェックします。

if (card >= 2 && card <= 6) {
    count++;
  } else if (card>=7 && card <=9) {
    count+= 0;
  } else if (card === 10 || card === 'J' || card === 'Q' || card === 'K' || card === 'A'){
    count--;
  }else {
    //Either just return or alert an error message and return
  }