[英]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"));
試試這個
解釋
拼寫錯誤更改為 contacts[i]['f keyname
contacts[i]['firstName']
而不是contacts[i][firstName]
。您缺少匹配obj
的鍵名。對於您的調用方式
contacts[i][Akira] == false statement
所以只有它總是去 else 語句
使用obj[key]
而不是obj.key
執行對象鍵調用方法。因為所有都是變量而不是鍵的直接名稱
第二個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.