我正在閱讀Codecademy的Javascript - Intro to Objects課程,並且我目前掛在了「回顧:迄今爲止的故事......」課程中的"4. I have to celebrate you baby" exercise。Javascript switch與if/else
的運動是:
這項工作有很多電影和評論中鍵入你可能 納悶,「這是教學的編碼或打字?」
但是有這麼多案件需要處理的原因。我們希望 表明如果我們使用
if
-else
陳述,這將是低效的。 我們可以使用什麼替代條件課?想象一下,你有一個電影收藏,你想寫一些代碼 分配您的評論給他們每個人。顯然每個評論 因電影而異。以下是電影和您的評論。 使用的結構在前面的經驗教訓寫代碼如下 信息:
- 「黑客帝國」 - 「好出去一趟」
- 「公主新娘」 - 「真棒約會之夜電影」
- 「歡迎來到美國」 - 「Amjad最喜歡的」
- 「記住泰坦」 - 「愛運動」
- 「爲什麼我看起來像我12? - 「在瑞安和扎克的故事」
- 「在野外戰鬥袋鼠」 - 「爲冷令牌的澳洲電影」
getReview
應該是一個函數,它接受一個電影的名字和return
S是其 綜述基於上面的信息。如果給定電影名稱未找到 只是返回"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"));
我敢肯定有辦法來優化這一點,但總體來說,我認爲這將是更容易添加,編輯,修改等movieReviews陣列比這將是程序切換語句。
換句話說,我沒有看到爲什麼switch語句與if-else語句相比效率低下。我錯過了什麼?
編輯:該問題的說明文字是:
這是可能的,如果使用,否則,如果和else語句,但是這是 效率低下。在有許多不同場景 和不同的情況下,請嘗試使用switch語句!
因爲我們正在定義一個函數,所以我們可以利用返回關鍵字 !
請確保您返回什麼評論文章
我真的不明白你的問題..你似乎沒有使用'switch' – 2013-02-12 04:48:00
練習的重點不在於使用switch語句。有人問,有沒有更好的辦法。你的getReview方法是邁向它的好的第一步。而不是寫類似的: '如果(==電影 「黑客帝國」) //做一些 否則,如果(電影== 「公主新娘」) //做別的事情 // ....' 您正在通過數組循環查找答案。比上面寫的方法糟糕的'if/else'方法更少的代碼。 現在,有沒有更好的方式來找到名稱而不是數組? – 2013-02-12 04:53:28
@RobDiMarco Marco - 我確定有更多最佳的方法來找到名字(我不確定他們現在是什麼,但我確定他們存在;-)。我只是沒有看到switch語句比給定場景的if/then更好。 – 2013-02-12 04:58:16