簡體   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