Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If-else在for循环中不起作用-Javascript_Javascript_Arrays_Object_For Loop_If Statement - Fatal编程技术网

If-else在for循环中不起作用-Javascript

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",

我有一个带有一些属性的数组“contacts”。My函数使用for检查每个联系人的firstName属性是否与函数的name参数匹配,如果匹配,则检查此类联系人的属性是否与prop参数匹配(前一个if中的if)。两个“ifs”都有相应的“ELSE”:“无此类财产”、“无此类接触”

代码其实很简单:

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;ilog(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;ilog(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"));