我正在学习 Codecademy 的 Javascript - Intro to Objects 课程,目前正在“回顾:迄今为止的故事......”课程中的“4。我必须庆祝你的宝贝”练习。
练习是:
这个练习有很多电影和评论可以输入。你可能会想,“这是教编码还是打字?!”
但是有这么多案件需要处理是有原因的。我们想表明,如果我们使用
if
-else
语句,它会是低效的。我们可以使用条件课程的什么替代方法?想象一下,您有一个电影收藏,并且您想编写一些代码,将您的评论分配给每个电影。显然,每个评论都因电影而异。以下是电影和您的评论。使用在前面课程中学习的结构编写代码以获取以下信息:
- 《黑客帝国》——《出游好去处》
- “公主新娘”-“很棒的约会之夜电影”
- “欢迎来到美国” - “Amjad 的最爱”
- “记住泰坦” - “热爱运动”
- “为什么我看起来像 12 岁?” - “瑞恩和扎克的故事”
- 《野外打袋鼠》——《给冷的澳洲代币电影》
getReview
应该是一个函数,它接受电影名称并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"));
我确信有办法对此进行优化,但总的来说,我认为添加、编辑、修改等movieReviews 数组比编写switch 语句更容易。
换句话说,我不明白为什么 switch 语句与 if-else 语句相比效率低下。我错过了什么?
编辑:问题的帮助文本是:
可以使用 if、else if 和 else 语句,但效率低下。在你有很多不同的场景和不同的场景的情况下,尝试使用 switch 语句!
因为我们正在定义一个函数,所以我们可以使用 return 关键字!
确保您返回的内容与评论文本的大小写相符