If-else在for循环中不起作用-Javascript
我有一个带有一些属性的数组“contacts”。My函数使用for检查每个联系人的firstName属性是否与函数的name参数匹配,如果匹配,则检查此类联系人的属性是否与prop参数匹配(前一个if中的if)。两个“ifs”都有相应的“ELSE”:“无此类财产”、“无此类接触” 代码其实很简单:If-else在for循环中不起作用-Javascript,javascript,arrays,object,for-loop,if-statement,Javascript,Arrays,Object,For Loop,If Statement,我有一个带有一些属性的数组“contacts”。My函数使用for检查每个联系人的firstName属性是否与函数的name参数匹配,如果匹配,则检查此类联系人的属性是否与prop参数匹配(前一个if中的if)。两个“ifs”都有相应的“ELSE”:“无此类财产”、“无此类接触” 代码其实很简单: var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number": "0543236543",
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("Harry", "likes"));
console.log(lookUpProfile("Kristian", "likes"));
它返回“无此类接触”…:/ 这是因为您在第一次循环迭代中没有返回此类联系人。将其放在循环后的函数底部,作为总括
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”,“fox”]
函数lookUpProfile(名称、属性){
对于(变量i=0;i log(lookUpProfile(“Akira”,“虚构属性”)代码>在当前代码中,如果数组的第一个元素与当前传递的名称不匹配,则转到else块并返回“No-this contact”(最终只检查第一个元素)
您从for循环中的else块返回错误,需要将其置于循环外
var contacts=var contacts=[{“firstName”:“Akira”,“lastName”:“Laine”,“number”:“0543236543”,“likes”:[“Pizza”,“Coding”,“Brownie Points”],{“firstName”:“Harry”,“lastName”:“波特”,“number”:“0994372684”,“likes”:[“霍格沃茨”,“魔法”,“海格”],{“firstName”:“克里斯蒂安”,“lastName”:“Vos”,“number”:“未知”,“likes”:“JavaScript”,“游戏”,“狐狸”}]
函数lookUpProfile(名称、属性){
对于(变量i=0;i log(lookUpProfile(“Harry”、“likes”)代码>您正在使用for
循环中的return
,当找不到匹配项时,它将中断for循环。嗯,但我不明白。。。为什么在外面。。?如果…,为什么它不能在第一个的else中?这不是逻辑吗?还有为什么for会停在那里。。如果我不了解它的工作方式,我就无法编写代码。@Ana它在外部,好像循环中没有任何联系人匹配,然后只返回未找到联系人
,如果有任何匹配的联系人,请与您的职能部门联系,不要出现此事件line@Ana在当前代码中,如果数组的第一个元素与当前传递的名称不匹配,则转到else块并返回“No-this contact”(最终只检查第一个元素)
这一行解释了为什么需要将其放置在loopMmm之外,但我不明白。。。为什么在外面。。?如果…,为什么它不能在第一个的else中?这不是逻辑吗?还有为什么for会停在那里。。如果我不了解它的工作方式,我就无法编写代码。return
退出该功能-因此,如果第一个联系人不是您要找的人,那么它将流向if
,对吗?您正在返回-这将退出该功能,并显示消息无此类联系人
。这有意义吗@Ana?哦,我明白了,我想我还需要学习很多东西:D非常感谢你!
console.log(lookUpProfile("Harry", "likes"));
console.log(lookUpProfile("Kristian", "likes"));