Profile Lookup-FCC

来源:互联网 发布:黄金现货手机行情软件 编辑:程序博客网 时间:2024/06/06 13:09

问题:

我们有一个对象数组,里面存储着通讯录。

函数 lookUp 有两个预定义参数:firstName值和prop属性 。

函数将会检查通讯录中是否存在一个与传入的firstName 相同的联系人。如果存在,那么还需要检查对应的联系人中是否存在prop属性。

如果它们都存在,函数返回prop属性对应的值。

如果firstName 值不存在,返回"No such contact"

如果prop 属性不存在,返回"No such property"

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 lookUp(firstName, prop){// 请把你的代码写在这条注释以下 // 请把你的代码写在这条注释以上}// 你可以修改这一行来测试你的代码lookUp("Harry", "likes");


一答:
for(var i=0;i<contacts.length;i++ ){    if(firstName==contacts[i].firstName){      if(contacts[i].hasOwnProperty(prop)){        return contacts[i].prop;      }else{        return "No such property";      }    }else{        return "No such contact";    }  }
有两个错误的地方:

1.prop作为参数传入是一个变量,JS对象对于变量不能使用.属性,而是要使用[属性];

2.最后的return写在if判断中是错误的,因为这是在该联系人找不到的情况下返回。



更改----二答:

for(var i=0;i<contacts.length;i++ ){    if(firstName==contacts[i].firstName){      if(contacts[i].hasOwnProperty(prop)){        return contacts[i][prop];      }else{        return "No such property";      }    }  }  return "No such contact";



憋了挺久,一直不清楚自己错在哪了...希望给困扰的人一点帮助