所以我最近开始使用 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"));
关于javascript - 基本配置文件查找始终返回未找到联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45118182/