私の名前はマイクです。私の質問は 2 つあります。
- question配列内のオブジェクトにアクセスして、プロンプトに正しく表示されるようにするにはどうすればよいですか?
- ステートメントでランダムに選択されたオブジェクトのプロパティにアクセスするにはどうすればよいif/elseですか?
さまざまな種類の音響機器を覚えるのに役立つ簡単なフラッシュカード プログラムを作成しようとしています。機器のリストは膨大ですが、この例を簡単にするために 3 つの異なる種類のみを含めています。各オブジェクトに と の 2 つのプロパティが必要answerですdesc。この最初の部分では、3 つのオブジェクトを定義し、それらを配列に配置し、配列項目の 1 つをランダムに選択するための変数と、ユーザーにanswer.
var newFlash = function() {
    var A827 = {
        answer: "T",
        desc: "Multitrack Tape Recorder"
    };
    var LA2A = {
        answer: "O",
        desc: "Classic Leveling Amplifier"
    };
    var SonyC800G = {
        answer: "M",
        desc: "Tube Condenser Microphone"
    };
    var list = [A827, LA2A, SonyC800G];
    var rand = Math.floor(Math.random() * list.length);
    var question = prompt("What kind of equipment is " + list[rand] + "?");
};
ここで、配列内の 3 つの項目をすべて文字列にすると、プロンプトに問題なく表示され、適切な配列項目にquestion正しく置き換えられます。list[rand]ただし、配列内のオブジェクトを使用すると、プロンプトは と表示されます"What kind of equipment is [object Object]?。
私の最終的な目標は、ユーザーが適切な 1 文字または 2 文字の応答 (マイクは M、コンソールは C、アウトボード ギアは O、テープ マシンは T、ソフトウェアは S、コンピューター ハードウェアは CH) を入力することです。成功した文字は、オブジェクトのanswerとの両方を表示するアラートを生成しますdesc。私のn00bの本能は、この2番目の部分は次if/elseの形式のステートメントであるべきだと教えてくれます
if (question == list[rand.answer]) {
    alert("Correct, Answer: " + list[rand.answer] + ", a " + list[rand.desc] + "!");
}
else {
    alert("Wrong, try again.");
}
しかし、これがこれらのオブジェクト プロパティにアクセスする正しい方法ではないことは確かです。
繰り返しになりますが、私の質問には 2 つの部分があります。
- question配列内のオブジェクトにアクセスして、プロンプトに正しく表示されるようにするにはどうすればよいですか?
- ステートメントでランダムに選択されたオブジェクトのプロパティにアクセスするにはどうすればよいif/elseですか?
いくつかの論理が私を逃れていると確信しています。読んでくれてありがとう。