【发布时间】:2019-07-07 05:08:33
【问题描述】:
我有一个包含一些属性的数组“联系人”。我的函数使用 for 检查每个联系人的 firstName 属性是否与我的函数的 name 参数匹配,如果匹配,则检查此类联系人是否具有与 prop 参数匹配的属性(前一个 if 中的 if)。两个“if”都有对应的“else”:“no such property”、“not such contact”。
代码其实很简单:
var contacts = [
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
},
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["JavaScript", "Gaming", "Foxes"]
}
];
function lookUpProfile(name, prop) {
for (var i = 0; i < contacts.length; i++) {
if (contacts[i].firstName === name) {
if (contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
}
else {
return "No such property";
}
}
else {
return "No such contact";}
}
}
console.log(lookUpProfile("Harry", "likes"));
以下几行完美运行:
console.log(lookUpProfile("Akira", "likes"));
console.log(lookUpProfile("Akira", "lala"));
现在,如果我把其余元素的任何其他 firsNames 放在一起:
console.log(lookUpProfile("Harry", "likes"));
console.log(lookUpProfile("Kristian", "likes"));
它返回“没有这样的联系”....:/
【问题讨论】:
-
您在
for循环中使用return,当找不到匹配项时会中断您的for 循环。
标签: javascript arrays object for-loop if-statement