[英]Profile look up (freecodecamp) challenge
对于这个 FreeCodeCamp 问题,我被困了很长时间,但当我改变时设法解决了它:
if(contacts[i].firstName === name)
到
if(contacts[i].name === firstName)
不确定为什么切换name
和firstName
有效,有人可以解释为什么吗? 更新:为了清晰起见,添加了整个代码:
//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.