JavaScript 使用循环语句查找通讯录
本人是Js小白一个,入学不足2h,在一次某网站的学习平台上学习,过程中遇到此题,难倒了我,现在看看so easy嘛。好,言归正传,我们来看看这个题:
我们有一个联系人列表,里面存储着不同联系人的数组对象。 函数 lookUpProfile 有两个预定义参数:firstName值和prop属性 。
该函数应检查firstName是实际联系人的firstName,给定的属性(prop)是该联系人的属性。
如果它们都存在,函数返回prop属性对应的值。 如果firstName 值不存在,返回 “No such contact”。 如果prop
属性不存在,返回 “No such property”。
以下是这个题目的已给资源,function需要我们自己填写。
//Setup
var contacts = [
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
},
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intriguing Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["Javascript", "Gaming", "Foxes"]
}
];
function lookUpProfile(firstName, prop){
// Only change code below this line
// this is where we need to write something down!!!
// Only change code above this line
}
// Change these values to test your function
lookUpProfile("Akira", "likes");
要求:当lookUpProfile(),里面元素为以下时的返回状态。
“Kristian”, “lastName” 应该返回 “Vos”
“Sherlock”, “likes” 应该返回 [“Intriguing Cases”, “Violin”]
“Harry”,”likes” 应该返回一个数组
“Bob”, “number” 应该返回 “No such contact”
“Akira”, “address” 应该返回 “No such property”
在网上查找后有一些正确的答案,但是!我认为有些不够简洁和接地气,
比如:
- 使用了三个for循环来分别判断3个状态
- 使用了
prop in contacts[i]
这样的循环判断,不免让很多初学者感到陌生和不知所以,因此,就个人的观点而言,我自己的这种思路可能更简洁明了,适合我们弱鸡【哈哈哈~】看看。
以下是本人的代码
function lookUpProfile(firstName, prop){
// Only change code below this line
for(var i=0;i<4;i++)
{
if(contacts[i].firstName==firstName)
{
if((prop=="firstName")||(prop=="lastName")||(prop=="number")||(prop=="likes"))
{
return contacts[i][prop];
}
else
{
return "No such property";
}
}
else if(i==3)
{
return "No such contact";
}
}
// Only change code above this line
}
在这段函数的实现中,我最初犯下的错误是:判断一个prop是否存在于某一个firstname中,将实现这个功能的代码错误地写为
prop==contacts[i].prop;
是不是超级荒唐?
还有,将返回查询结果中,存在的信息为:
return contacts[i].prop;
这里要注意,“.”是不可以将某人的某个信息提取出来的!必须用【】来索引。不用问为什么,那些牛人就是这么设计的!
“`
最后,附下该题目的超链接,供那些在求知路上的人学习。
放在最后,以免打广告之嫌。