私は Codecademy の Javascript - Intro to Objects コースを受講しており、現在、「復習: これまでの話...」レッスンの「4. I have toCeleb you baby」演習に取り組んでいます。
演習は次のとおりです。
この演習には、入力するための映画やレビューがたくさんあります。
しかし、これほど多くのケースに対処しなければならないのには理由があります。
if
-else
ステートメントを使用すると非効率になることを示したいと思います。条件付きレッスンのどの代替手段を使用できますか?映画のコレクションがあり、それぞれにレビューを割り当てるコードを書きたいとします。明らかに、各レビューは映画によって異なります。以下は、映画とあなたのレビューです。前のレッスンで学習した構造を使用して、以下の情報をコードで記述します。
- 「マトリックス」 - 「いい旅だ」
- 「プリンセス・ブライド」 - 「最高のデート・ナイト・ムービー」
- 「アメリカへようこそ」 - 「アムジャドのお気に入り」
- 「Remember the Titans」 - 「love the sports」
- 「どうして12歳に見えるの?」- 「ライアンとザックの物語」
- 「野生のカンガルーとの戦い」 - 「Leng のトークン オーストラリア映画」
getReview
return
上記の情報に基づいて、映画の名前とそのレビューを取得する関数にする必要があります。映画の名前が見つからない場合は、単に return を返し"I don't know!"
ます。
私の理解では、データをロジックから分離することが重要です。したがって、私の最初の解決策は次のとおりです。
var getReview = function (movie) {
for (var i = 0; i < movieReviews.length; i++) {
if (movie === movieReviews[i].name) {
return(movieReviews[i].review);
}
}
return("I don't know!");
};
var movieReviews = [{name: "Matrix", review:"good trip out"},
{name: "Princess Bride", review:"awesome date night movie"},
{name: "Welcome to America", review:"Amjad's favorite"},
{name: "Remember the Titans", review:"love the sports"},
{name: "Why do I look like I'm 12?", review:"The Ryan and Zach story"},
{name: "Fighting Kangaroos in the wild", review:"Token Australian movie for Leng"}];
console.log(getReview("Matrix"));
これを最適化する方法はあると思いますが、全体としては、switch ステートメントをプログラムするよりも、movieReviews 配列を追加、編集、変更する方が簡単だと思います。
つまり、if-else ステートメントと比較して switch ステートメントが非効率的である理由がわかりません。私は何が欠けていますか?
編集: 問題のヘルプ テキストは次のとおりです。
if、else if、else ステートメントを使用することは可能ですが、非効率的です。さまざまなシナリオがあり、さまざまな状況が発生する状況では、switch ステートメントを使用してみてください。
関数を定義しているので、 return キーワードを利用できます!
返される内容がレビュー テキストの大文字と小文字と一致していることを確認してください