所以我正在浏览 freecodecamp,我正在解决那里的问题,以保持编程的循环,我偶然发现了一个障碍,我不太确定哪里出了问题。
所以我有一个名为联系人的对象数组,我需要创建一个名为 lookUp(firstName, prop)
的函数。作业的正文是这样的:
该函数应检查
firstName
是否为实际联系人的firstName
以及该联系人的给定属性(prop
属性)。如果两者都为真,则返回该属性的“值”。
如果
firstName
不对应于任何联系人,则返回“没有这样的联系人”如果
prop
不对应于任何有效属性,则返回“无此类属性”
编码:
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": ["Intruiging Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["Javascript", "Gaming", "Foxes"]
},
];
function lookUp( firstName, prop ){
for( var i = 0; i < contacts.length; i++ ){
if( contacts[i].firstName == firstName ) {
if( contacts[i].hasOwnProperty( prop ) ) {
return contacts[i].prop;
} else {
return "No such property";
}
} else {
return "No such contact";
}
}
}
// Change these values to test your function
lookUp("Kristian", "lastName");
所以我用 for
循环检查每个对象。在第一个 if
我检查对象的 firstName
属性是否等于函数参数 firstName,然后如果是,我检查对象是否具有属性 prop
,我应该可以退货。但似乎
return contacts[i].prop;
不工作,我有点不知道为什么。我敢肯定这是微不足道的事情,但我不明白为什么。当我去控制台并测试时
contacts[0].likes
我得到了数组 ["Pizza", "Coding", "Brownie Points"]
,但在我看来这不起作用。我在这里做错了什么?
编辑
好的,所以我尝试了
function lookUp( firstName, prop ){
for( var i = 0; i < contacts.length; i++ ){
if( contacts[i].firstName == firstName ) {
if( contacts[i].hasOwnProperty( prop ) ) {
return contacts[i][prop];
} else {
return "No such property";
}
} else {
return "No such contact";
}
}
}
但我仍然遇到同样的错误:
原文由 dingo_d 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,我很笨,我太早退出了 for 循环:
这行得通。