簡體   English   中英

在 javascript 中查找 function

[英]Lookup function in javascript

我正在嘗試解決一個挑戰,這是問題集

我們有一組代表我們聯系人列表中不同人的對象。

已經為您預先編寫了一個 lookUpProfile function,它將 firstName 和屬性 (prop) 作為 arguments。

function 應該檢查 firstName 是否是實際聯系人的 firstName 以及給定的屬性 (prop) 是否是該聯系人的屬性。

如果兩者都為真,則返回該屬性的“值”。

如果 firstName 不對應任何聯系人,則返回“No such contact”

如果 prop 不對應於任何有效的屬性,則返回“沒有這樣的屬性”

我的嘗試

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

}

// Only change code above this line
}

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

如果我在 lookUpProfile function 中輸入不存在的值,它只會返回 undefined

例如 lookUpProfile("Donald", "likes");

<. 不明確的

請幫我解決這個問題。 您也可以對此要點發表評論

謝謝

循環中的第一個條件應該檢查​​ name 是否相等。 如果它滿足那么你應該檢查屬性是否存在如果它存在返回值否則返回no such property 。如果沒有找到這樣的名字那么它將退出循環並且你可以不返回no such contact

 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(firstName, prop){ // Only change code below this line for(var i =0;i<contacts.length;i++){ if (contacts[i].firstName===firstName){ if(contacts[i].hasOwnProperty(prop)===true){ return contacts[i][prop]; } else { return "No such property"; } } } return "No such contact"; } //No such contact console.log(lookUpProfile("Donald", "likes")); //No such property console.log(lookUpProfile("Sherlock", "locks")); //returns value of property console.log(lookUpProfile("Kristian", "likes"));

你可以簡單地像這樣解決它:

const found = contacts.find(contact => contact.firstName == name)
return !found ? 'No such contact' : found[prop] || 'No such property'

嘗試以下代碼:

function lookUpProfile(firstName, prop){

    // Only change code below this line
    var isFirstName = false;
    for(var i =0;i<contacts.length;i++){
        if(contacts[i].firstName === firstName){
            isFirstName = true;
        }
    }
    if(!isFirstName){
        return "No such contact";
    }
    else {
        for(var i =0;i<contacts.length;i++){
            if (contacts[i].firstName===firstName && contacts[i].hasOwnProperty(prop)===true){
                return contacts[i][prop];
            }
            else if (contacts[i].hasOwnProperty===false){
                return "No such property";
            }
        }
    }

    // Only change code above this line
    }

    // Change these values to test your function
    console.log(lookUpProfile("Donald", "likes"))

另一種方法是使用 OR 運算符。 那么,只需要一個“if 語句”:

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(firstName, prop) {
    for (i = 0; i < contacts.length; i++) {
        if (contacts[i].firstName === firstName) {
            return contacts[i][prop] || "No such property";
        }
            return "No such contact";
    }
}

console.log(lookUpProfile("Akira", "likes")); // Returns [ 'Pizza', 'Coding', 'Brownie Points' ]

console.log(lookUpProfile("Akira", "current job")); // Returns No such property

console.log(lookUpProfile("Karanja", "likes")); // Returns No such contact

在這里,OR 運算符的第二部分用作“else”語句。

我自己在 FreeCodeCamp 的Javascript 算法和數據結構配置文件查找問題上遇到了這個問題,上面的答案似乎有些過時了。

以下是我修復它的方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM