【发布时间】:2016-01-14 19:33:43
【问题描述】:
所以我正在通过 freecodecamp 并解决那里的问题,以保持与编程的循环,我偶然发现了一个障碍,我不太确定出了什么问题。
所以我有一个名为联系人的对象数组,我需要创建一个名为lookUp(firstName, prop) 的函数。作业的正文是这样的:
该函数应检查
firstName是否是实际联系人的firstName,并且给定的属性(prop)是该联系人的属性。如果两者都为真,则返回该属性的“值”。
如果
firstName不对应任何联系人,则返回“No such contact”如果
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";
}
}
}
但我仍然遇到同样的错误:\
【问题讨论】:
-
不,这与所讨论的“重复”完全无关,我回来得太早了:)
-
这个问题是在 2 年前提出的......
-
是的,实际上,> 2.5 年前,这使得这次谈话没有那么有用。大多数情况下,我看到这个问题被认为是一个错字而被关闭。如果可能的话,我更喜欢将事物关闭为重复项,作为路标。在这种情况下,我太渴望做到这一点。对此感到抱歉。
-
是的,没问题,不知道为什么突然有这么多关闭投票:D 我很好,只要有帮助,帖子被关闭或打开 :)
标签: javascript arrays object