这个用了大概三四天时间,做了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统一返回,否则在下一次循环中会被覆盖