Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 嵌套的if语句和&&;(和)此for循环内的运算符不同?_Javascript_Arrays_For Loop_Javascript Objects_And Operator - Fatal编程技术网

Javascript 嵌套的if语句和&&;(和)此for循环内的运算符不同?

Javascript 嵌套的if语句和&&;(和)此for循环内的运算符不同?,javascript,arrays,for-loop,javascript-objects,and-operator,Javascript,Arrays,For Loop,Javascript Objects,And Operator,这里也有类似的问题,但我找不到与此相关的问题。我的问题是: 这两个函数输出不同的结果。我的印象是&&运算符的工作原理与嵌套的if语句相同。关于&&运算符的工作方式,我显然存在误解/逻辑错误。我相信这与处于循环中以及试图同时读取条件或类似情况有关,但如果有人能详细说明发生了什么,我们将不胜感激。第二个函数中的&&运算符是怎么回事?为什么它输出未找到的属性 var contacts = [ { "firstName": "Harry", "lastName":

这里也有类似的问题,但我找不到与此相关的问题。我的问题是:

这两个函数输出不同的结果。我的印象是&&运算符的工作原理与嵌套的if语句相同。关于&&运算符的工作方式,我显然存在误解/逻辑错误。我相信这与处于循环中以及试图同时读取条件或类似情况有关,但如果有人能详细说明发生了什么,我们将不胜感激。第二个函数中的&&运算符是怎么回事?为什么它输出未找到的属性

var contacts = [
    {
        "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"]
    },
    {
        "firstName": "Akira",
        "lastName": "Laine",
        "number": "0543236543",
        "likes": ["Pizza", "Coding", "Brownie Points"]
    }
];

function lookUp(arr, firstName, prop){
  for (var x = 0; x < contacts.length; x++){
    if (arr[x].firstName === firstName) 
      if (arr[x].hasOwnProperty(prop)) 
        return arr[x][prop];
      else 
        return "No such property";
  }
}

lookUp(contacts, "Kristian", "likes")
// ["Javascript", "Gaming", "Foxes"]

function lookUp(arr, firstName, prop){
  for (var x = 0; x < contacts.length; x++){
    if (arr[x].firstName === firstName && arr[x].hasOwnProperty(prop))  
      return arr[x][prop];
    else 
        return "No such property";
  }
}

lookUp(contacts, "Kristian", "likes")
// "No such property"
var联系人=[
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
},
{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
}
];
函数查找(arr、firstName、prop){
对于(变量x=0;x
正确的函数可能如下所示:

function lookUp(arr, firstName, prop) {
    for (var x = 0; x < contacts.length; x++) {
        if (arr[x].firstName === firstName && arr[x].hasOwnProperty(prop)) 
            return arr[x][prop];
    }
    return "No such property";
}
函数查找(arr、firstName、prop){
对于(变量x=0;x
解释 您的循环将只进行一次迭代,因为当第一次
为true时,如果
为true,它将
返回arr[x][prop]
,如果为false,它将
返回“无此类属性”

return
会一直跳出函数,这就是循环停止的原因


而不是“正确”的解决方案将遍历所有数组元素,如果没有提供名称,它将返回
“无此类属性”

正确的函数可能如下所示:

function lookUp(arr, firstName, prop) {
    for (var x = 0; x < contacts.length; x++) {
        if (arr[x].firstName === firstName && arr[x].hasOwnProperty(prop)) 
            return arr[x][prop];
    }
    return "No such property";
}
函数查找(arr、firstName、prop){
对于(变量x=0;x
解释 您的循环将只进行一次迭代,因为当第一次
为true时,如果
为true,它将
返回arr[x][prop]
,如果为false,它将
返回“无此类属性”

return
会一直跳出函数,这就是循环停止的原因


而不是“正确”的解决方案将遍历所有数组元素,如果没有提供名称,它将返回
“No-this-property”

第二个函数与第一个函数不同,因为内部if具有else条件

运算符仅在其变为真时才执行后续条件

例如: 如果条件是X==Y&&Y==Z,那么只有当X==Y时,才会执行Y==Z

在第一种情况下,为条件1添加另一个,它将如下所示:

 if Condition1 {

       if condition2

         console.log("1");

      else

            console.log("2");
    }
    else 

        console.log("3");

    Second Case

     If Condition1 && Condition2
       console.log("1");
     else
       console.log("2 and 3");  // all the case of 2 and 3 come here

第二个函数和第一个函数不等价,因为内部if有else条件

运算符仅在其变为真时才执行后续条件

例如: 如果条件是X==Y&&Y==Z,那么只有当X==Y时,才会执行Y==Z

在第一种情况下,为条件1添加另一个,它将如下所示:

 if Condition1 {

       if condition2

         console.log("1");

      else

            console.log("2");
    }
    else 

        console.log("3");

    Second Case

     If Condition1 && Condition2
       console.log("1");
     else
       console.log("2 and 3");  // all the case of 2 and 3 come here
这是工作100%

function lookUp(arr, firstName, prop){
    var lock;

    for(var i = 0; i < arr.length; i++)
    {
        if((arr[i].firstName == firstName) && (arr[i].hasOwnProperty(prop)))
        {
            lock = arr[i][prop];
            break;
        }else{
            lock = "No such property";
        }
    }
    return lock;
}
函数查找(arr、firstName、prop){
变量锁;
对于(变量i=0;i
这100%有效

function lookUp(arr, firstName, prop){
    var lock;

    for(var i = 0; i < arr.length; i++)
    {
        if((arr[i].firstName == firstName) && (arr[i].hasOwnProperty(prop)))
        {
            lock = arr[i][prop];
            break;
        }else{
            lock = "No such property";
        }
    }
    return lock;
}
函数查找(arr、firstName、prop){
变量锁;
对于(变量i=0;i
这是else语句。此外,我在《意外》中输入了错误的代码片段,需要另一个返回,但我能找到答案。else的陈述就是我们所做的。需要记住不要把if/&&和else语句捆在一起,或者以后要小心这样做。感谢是另一种说法。此外,我在《意外》中输入了错误的代码片段,需要另一个返回,但我能找到答案。else的陈述就是我们所做的。需要记住不要把if/&&和else语句捆在一起,或者以后要小心这样做。感谢不要说“这是100%工作”,如果你能解释为什么你的代码能解决这个问题会更有用。让OP来决定这段代码是否对他们有效。与其说“这是100%有效”,不如解释一下你的代码解决问题的原因。让OP来决定此代码是否正确