Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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
JavaScript条件语句未按预期工作_Javascript - Fatal编程技术网

JavaScript条件语句未按预期工作

JavaScript条件语句未按预期工作,javascript,Javascript,当firstName和property为true时,函数不显示属性-它只移动到“我的其他条件”并显示“找不到联系人”。然而,当我将上一次返回的“未找到联系人”放在“for”循环之外时,代码工作得非常好 //Setup var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number": "0543236543", "likes": ["Pizza",

当firstName和property为true时,函数不显示属性-它只移动到“我的其他条件”并显示“找不到联系人”。然而,当我将上一次返回的“未找到联系人”放在“for”循环之外时,代码工作得非常好

//Setup
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": ["Intriguing Cases", "Violin"]
    },
    {
        "firstName": "Kristian",
        "lastName": "Vos",
        "number": "unknown",
        "likes": ["Javascript", "Gaming", "Foxes"]
    }
];


function lookUpProfile(firstName, prop){
// Only change code below this line
  for (var i = 0; i < contacts.length; i++){

       if (contacts[i].firstName === firstName && contacts[i].hasOwnProperty(prop)){   
            return contacts[i][prop];
       }else if (contacts[i].hasOwnProperty(prop) === false){
           return "No such property";
       }else if (contacts[i].firstName !== firstName){
           return "No such contact";
       }

  }


// Only change code above this line
}

// Change these values to test your function
lookUpProfile("Kristian", "lastName");
//设置
var触点=[
{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
},
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}
];
函数lookUpProfile(firstName,prop){
//仅更改此行下方的代码
对于(变量i=0;i
函数lookUpProfile(名字,道具){
//仅更改此行下方的代码
对于(变量i=0;i
如果条件从函数返回,阻止进一步查找,则删除两个条件

当数组查找第0个元素时,条件将不满足,因此它将转到
3rd else if
块,从函数返回<代码>返回应该写在for循环之后。

函数lookUpProfile(firstName,prop){
//仅更改此行下方的代码
对于(变量i=0;i
如果条件从函数返回,阻止进一步查找,则删除两个条件

当数组查找第0个元素时,条件将不满足,因此它将转到
3rd else if
块,从函数返回<代码>返回应该在for循环之后写入。

如果您仔细考虑,您的代码需要如下所示:

function lookUpProfile(firstName, prop) {
  for (var i = 0; i < contacts.length; i++) {
    const contact = contacts[i];

    if (contact.firstName === firstName) {
      if (contact.hasOwnProperty(prop)) return contact[prop];
      else return "No such property";
    }
  }

  return "No such contact";
}
或者,如果您发现三元(
)运算符太难读取,则

  if (!entry) return "No such contact";
  if (!entry.hasOwnProperty(prop)) return "No such property";
  return entry[prop];
如果您打算执行大量这些查找,请准备一个按
firstname
索引的映射:

const map = new Map(contacts.map(contact => [contact.firstName, contact]));
现在,您可以在接近O(1)的时间内编写查找,如下所示:


仔细想想,您的代码需要如下所示:

function lookUpProfile(firstName, prop) {
  for (var i = 0; i < contacts.length; i++) {
    const contact = contacts[i];

    if (contact.firstName === firstName) {
      if (contact.hasOwnProperty(prop)) return contact[prop];
      else return "No such property";
    }
  }

  return "No such contact";
}
或者,如果您发现三元(
)运算符太难读取,则

  if (!entry) return "No such contact";
  if (!entry.hasOwnProperty(prop)) return "No such property";
  return entry[prop];
如果您打算执行大量这些查找,请准备一个按
firstname
索引的映射:

const map = new Map(contacts.map(contact => [contact.firstName, contact]));
现在,您可以在接近O(1)的时间内编写查找,如下所示:


您正在检查每个联系人的名字,如果他们不相等,您将返回,因为不存在联系人。当kristin contact与第一个联系人不相等时,它将不返回任何联系人,并从for循环中存在 这就是为什么当你搬家时,他们会像预期的那样工作

将代码更改为以下内容

//设置
var触点=[{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
}, {
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
}, {
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
}, {
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}];
函数lookUpProfile(名字,道具){
var=false;
var noProp=false;
//仅更改此行下方的代码
对于(变量i=0;i控制台日志(res)您正在检查每个联系人的名字,如果他们不相等,您将返回为不存在联系人,当kristin contact与第一个联系人不相等时,它将不返回任何联系人并从for循环中存在
这就是为什么当你搬家时,他们会像预期的那样工作

将代码更改为以下内容

//设置
var触点=[{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
}, {
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”,“魔法”,“哈