2016-09-09 9 views
-10

こんにちは私は現在、フリータイムにwww.codeacademy.comウェブサイトを使用してJavaScriptを学習しています。JavaScript、オブジェクト、関数、およびケースステートメントの問題

私はオブジェクトを作成するように頼まれ、そのオブジェクトから名前を検索する関数を呼び出します。どのオブジェクトに名前があるかは、すべてのプロパティを画面に表示する必要があります。私はif else文で簡単にこれを行うことができます。何が私を混乱させることは、それがケースステートメントで動作することはできません。正しい大文字小文字を選択する代わりに、「常に」最初の大文字小文字を選択します。私が持っているコードは以下の通りです。それは試してみて、私はそのiが、それはすべきだと思うか動作しない理由を理解するために、いくつかのデバッグ行が含まれています

var movie = {}; 

movie.toyStory2 = { 
    name: "Toy Story 2", 
    review: "Great story. Mean prospector." 
}; 

movie.findingNemo = { 
    name: "Finding Nemo", 
    review: "Cool animation, and funny turtles." 
}; 

movie.theLionKing = { 
    name: "The Lion King", 
    review: "Great songs." 
}; 

var list = function(obj) { 
    for (var prop in obj) { 
      console.log(1,prop); 
    } 
}; 

var getReview = function (name) { 
    for (var name in movie) { 
      console.log(2, name); // debug line 
      console.log(3, movie); // debug line 

      switch (movie) { // debug line i have used different switches to no avail 
          // movie prop name amongst others, though logically 
          // i think this should work 
       case "Toy Story 2": 
        console.log(4, movie[name].review); // debug line 
        return movie[name].review; 
        break; 
       case "Finding Nemo": 
        console.log(5, movie[name].review); // debug line 
        return movie[name].review; 
        break; 
       case "The Lion King": 
        console.log(666, movie[name].review); // debug line 
        return movie[name].review; 
        break; 
       default: 
        console.log(7, movie[name].review); // debug line 
        return ("I don't know!"); 
        break; 
      } 
    } 
}; 

list(movie); 
//getReview("Toy Story 2"); // debug line 
//getReview("Finding Nemo"); // debug line 
getReview("The Lion King"); 

オブジェクトが私のためにプログラミングで理解するための最も困難な部分である、任意の助けをいただければ幸いです、優しくしてください:D

あなたのアドバイスをいただきありがとうございます。私はそれを取って、私のポストをきれいにしました。謝罪

+4

''「CODEではなく、私は簡単に読みやすくするためにITのJPEG を添付しましたFORUMビューのITをフォーマットに時間を費やすのではなく、ここにいたでしょう。」 - と私たちが望む場合それを自分自身で実行するには - それを自分で入力する必要がありますか? –

+3

翻訳済み:はい、あなたに手伝ってもらうのに時間を費やします。 –

+4

まだ人々はJavaScriptをJavaと間違えていますか? – Midnightas

答えて

-1

switchの文では、名前がnameの引数と一致するオブジェクトは検索されません。 forループ内の現在のプロパティの名前と一致するステートメントが見つかるまで、各caseステートメントを通過します。オブジェクトの最初のプロパティはname = "Toy Story 2"なので、最初のcase文は一致します。したがって、console.log()ステートメントを実行し、関数から戻ります。

switchステートメントを使用する理由はありません。それは次のようになります。

for (var prop in movie) { 
    if (movie[prop].name == name) { 
     console.log(5, movie[prop].name); 
     return movie[prop].review; 
    } 
} 
+0

ありがとうBarmar、私はそれを使用しました。チュートリアルは私がスイッチのステートメントを使用して断言した。私は最後に、forループを削除するだけでそれを試しました。このチュートリアルではそれを正しいものとして受け入れますが。私はあなたの助けに感謝します。 – karlos

関連する問題