簡體   English   中英

基本配置文件查找總是返回未找到聯系人

[英]Basic Profile Lookup always returning no contact found

所以我最近開始使用 freecodecamp 上的教程學習 Javascript,這個挑戰我已經堅持了幾個小時。

該函數總是返回“未找到聯系人”,我不明白為什么。 如果有人向我解釋並更正我的代碼,我將不勝感激。

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 (var i=0; contacts.length>i; i++) {

    if (contacts[i][firstName]==firstName) {
      if (contacts.i.prop.hasOwnProperty()===true) {
        return contacts.i.prop;
      } else { return "No such property";
     }
    } 
      return "No such contact"; }
}

lookUpProfile("Akira", "lastName");

最好為此使用Array.prototype.find()

function findByProp(list, val, prop) {
  let found = list.find(el => el[prop] === val);
  return found ? found[prop] : "No contact found";
}

 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 findByProp(list, val, prop) { let found = list.find(el => el[prop] === val); return found? found[prop]: "No contact found"; } console.log(findByProp(contacts, "Akira", "firstName")); console.log(findByProp(contacts, "foo", "firstName"));

試試這個

解釋

  1. 拼寫錯誤更改為 contacts[i]['f keyname contacts[i]['firstName']而不是contacts[i][firstName] 。您缺少匹配obj的鍵名。對於您的調用方式

    contacts[i][Akira] == false statement所以只有它總是去 else 語句

  2. 使用obj[key]而不是obj.key執行對象鍵調用方法。因為所有都是變量而不是鍵的直接名稱

  3. 第二個hasownproperty(varible)你沒有提到要用那個對象檢查哪個詞

 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 (var i=0; contacts.length>i; 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"; } } console.log(lookUpProfile("Akira", "lastName"));

function lookUpProfile(name, prop) {

    for (let i = 0; i < contacts.length; i++) {

        if ((name == contacts[i].firstName)) {
            if (contacts[i].hasOwnProperty(prop)) {
                return contacts[i][prop];
            } else
                return "No such property";
        }
        
        if (i == contacts.length - 1) return "No such contact";
    }
}

暫無
暫無

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

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