繁体   English   中英

个人资料查找(freecodecamp)挑战

[英]Profile look up (freecodecamp) challenge

在此处输入图片说明

对于这个 FreeCodeCamp 问题,我被困了很长时间,但当我改变时设法解决了它:

if(contacts[i].firstName === name)

if(contacts[i].name === firstName)

不确定为什么切换namefirstName有效,有人可以解释为什么吗? 更新:为了清晰起见,添加了整个代码:

//Setup
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 lookUpProfile(name, prop){
// Only change code below this line
for (var i =0; i <contacts.length; i++) {
    if(contacts[i].firstName === name) {
    if(contacts[i].hasOwnProperty(prop)) {
        return contacts[i][prop];
    } else
        return "No such property";   
    }
}
    return "No such contact"
// Only change code above this line
}

// Change these values to test your function
lookUpProfile("Akira", "likes"); 

我是这么想的。 所以这是让我通过的代码。

function lookUpProfile(name, prop){
// Only change code below this line
for (var i =0; i <contacts.length; i++) {
    if(contacts[i].firstName === name) {
    if(contacts[i].hasOwnProperty(prop)) {
        return contacts[i][prop];
    } else
        return "No such property";   
    }
}
    return "No such contact"
// Only change code above this line
}

// Change these values to test your function
lookUpProfile("Akira", "likes"); 

使用以下if语句有两个问题:

if(contacts[i].name === firstName)

第一个问题是您试图使用firstName作为变量 您的代码中没有名为firstName变量,因此当您尝试将其用作一个变量时会出现错误。 相反, firstName是数组中对象的属性(不要与独立变量混淆)。 这意味着您只能通过引用数组中的对象来访问firstName

上述代码的第二个问题是contacts[i].name 在这部分代码中, contacts[i]指的是代码中的第i th对象。 然后您尝试访问此给定对象的name属性。 但是,您的对象都没有name属性 - 它们具有firstName属性,但没有name属性。 因此,当您尝试访问不在您的对象中的属性/键时,您将返回undefined

要使用的有效代码是:

if(contacts[i].firstName === name)

因为firstName您的对象的属性(您正在参考您的对象访问它 - contacts[i] ),而name是一个变量(函数的参数),可以毫无问题地使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM