【问题标题】:Why does function return false after checking only one value in loop为什么在循环中只检查一个值后函数返回false
【发布时间】:2015-01-23 18:40:34
【问题描述】:

试图检查一个值是否存在于数组中,但我的嵌套 if 语句正在返回 即使该值存在于数组中,也为 false。这一直有效,直到我在循环中添加了一个 else,现在它只在要检查的值是第一个索引时才有效。

var num = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var inp = parseInt(prompt("Enter a number to see if it is in the array:"));

function checkIfInArray(n, anArray) {

  for (var i = 0; i < anArray.length; i++) {
    if (num[i] == n) {
      return true;
    } else {
      return false;
    }
  }
}

console.log(checkIfInArray(inp, num));

【问题讨论】:

  • 您是否期望该函数能够return false;多次?这将如何运作?

标签: javascript function if-statement for-loop


【解决方案1】:

即使您在for-loop 中进行了检查,for-loop 中的代码也只运行一次,因为现在您已经添加了else,它总是会返回一些东西。

如果没有找到返回 false 的正确方法是在 for 循环结束后添加 return false

for(var i = 0;i < anArray.length;i++)
{
     if(num[i] == n)
     {
          return true;
     }
} 

return false;

【讨论】:

    【解决方案2】:

    你应该使用这个:

        function checkIfInArray(n,anArray)
        {
            for(var i = 0;i < anArray.length;i++)
            {
                if(num[i] == n)
                {
                    return true;
                }
            }  
            return false; 
        }
    

    【讨论】:

      【解决方案3】:

      你有一个 if 语句要在第一次检查时返回,无论是真还是假

      【讨论】:

        【解决方案4】:

        您的函数将在第一次“返回”时停止并退出。如果在循环后加一个return false,它会保证如果循环后函数没有退出(=不在数组中),它会返回false:

        var num = [1,2,3,4,5,6,7,8,9];
        var inp = parseInt(prompt("Enter a number to see if it is in the array:"));
        
        function checkIfInArray(n,anArray)
        {
            for(var i = 0;i < anArray.length;i++)
            {
                if(num[i] == n)
                {
                    return true;
                }
            }
            
            return false;
        }
        
        var result = checkIfInArray(inp,num);
        console.log(result)

        【讨论】:

          猜你喜欢
          • 2020-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-14
          • 1970-01-01
          相关资源
          最近更新 更多