一个不一样的JavaScript 使用循环语句查找通讯录的方法实现

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”


在网上查找后有一些正确的答案,但是!我认为有些不够简洁和接地气,
比如:

  1. 使用了三个for循环来分别判断3个状态
  2. 使用了

    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;

这里要注意,“.”是不可以将某人的某个信息提取出来的!必须用【】来索引。不用问为什么,那些牛人就是这么设计的!
“`

最后,附下该题目的超链接,供那些在求知路上的人学习。
放在最后,以免打广告之嫌。

https://www.w3cschool.cn/codecamp/profile-lookup.html#?solution=%2F%2FSetup%0Avar%20contacts%20%3D%20%5B%0A%7B%0A%22firstName%22%3A%20%22Akira%22%2C%0A%22lastName%22%3A%20%22Laine%22%2C%0A%22number%22%3A%20%220543236543%22%2C%0A%22likes%22%3A%20%5B%22Pizza%22%2C%20%22Coding%22%2C%20%22Brownie%20Points%22%5D%0A%7D%2C%0A%7B%0A%22firstName%22%3A%20%22Harry%22%2C%0A%22lastName%22%3A%20%22Potter%22%2C%0A%22number%22%3A%20%220994372684%22%2C%0A%22likes%22%3A%20%5B%22Hogwarts%22%2C%20%22Magic%22%2C%20%22Hagrid%22%5D%0A%7D%2C%0A%7B%0A%22firstName%22%3A%20%22Sherlock%22%2C%0A%22lastName%22%3A%20%22Holmes%22%2C%0A%22number%22%3A%20%220487345643%22%2C%0A%22likes%22%3A%20%5B%22Intriguing%20Cases%22%2C%20%22Violin%22%5D%0A%7D%2C%0A%7B%0A%22firstName%22%3A%20%22Kristian%22%2C%0A%22lastName%22%3A%20%22Vos%22%2C%0A%22number%22%3A%20%22unknown%22%2C%0A%22likes%22%3A%20%5B%22Javascript%22%2C%20%22Gaming%22%2C%20%22Foxes%22%5D%0A%7D%0A%5D%3B%0A%0A%0Afunction%20lookUpProfile(firstName%2C%20prop)%7B%0A%2F%2F%20Only%20change%20code%20below%20this%20line%0A%20%20for(var%20i%3D0%3Bi%3C4%3Bi%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if(contacts%5Bi%5D.firstName%3D%3DfirstName)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if((prop%3D%3D%22firstName%22)%7C%7C(prop%3D%3D%22lastName%22)%7C%7C(prop%3D%3D%22number%22)%7C%7C(prop%3D%3D%22likes%22))%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20contacts%5Bi%5D%5Bprop%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22No%20such%20property%22%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if(i%3D%3D3)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22No%20such%20contact%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20%20%20%0A%2F%2F%20Only%20change%20code%20above%20this%20line%0A%7D%0A%0A%2F%2F%20Change%20these%20values%20to%20test%20your%20function%0AlookUpProfile(%22Akira%22%2C%20%22likes%22)%3B%0A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值