freeCodeCamp Profile Lookup解法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值