[英]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.