这个用了大概三四天时间,做了200多道题,其中有100多个是非常基础的,目前遇到的稍微好点的,一个是21点算法,另一个就是这道题了,这个看着非常简单,然而我却运行了至少几十遍才搞定,所以记下来,给还没搞定的朋友一点提示.
当然这未必是最优方法,但在非常符合目前的进度知识。
//初始化变量
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){
// 请把你的代码写在这条注释以下
var result = "No such contact";
for (var i = 0; i < contacts.length; i++) {
if (contacts[i].firstName == firstName) {
for (var j in contacts[i]) {
if(j == prop){
return contacts[i][prop];
}
result = "No such property";
}
}
}
return result;
// 请把你的代码写在这条注释以上
}
// 你可以修改这一行来测试你的代码
lookUp("Akira", "address");
- 首先默认一个变量result,并赋值未找到联系人
- 如果没有进入判断,结果不会改变
- 如果进入判断,则遍历每个item的(这里的item是对象,而非数组)
- 如果没有进入对比prop的判断,则结果变更为没找到属性
- 如果进入判断,则直接return出来,不通过result统一返回,否则在下一次循环中会被覆盖