freeCodeCamp Profile Lookup解法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lftaoyuan/article/details/81913083

这个用了大概三四天时间,做了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");
  1. 首先默认一个变量result,并赋值未找到联系人
  2. 如果没有进入判断,结果不会改变
  3. 如果进入判断,则遍历每个item的(这里的item是对象,而非数组)
  4. 如果没有进入对比prop的判断,则结果变更为没找到属性
  5. 如果进入判断,则直接return出来,不通过result统一返回,否则在下一次循环中会被覆盖

猜你喜欢

转载自blog.csdn.net/lftaoyuan/article/details/81913083