为什么函数在循环中只检查一个值后返回 false

Why does function return false after checking only one value in loop

本文关键字:一个 false 返回 函数 循环 检查 为什么      更新时间:2023-09-26

试图检查数组中是否存在值,但我的嵌套 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));

即使您在 for 循环中进行了检查,for -循环中的代码也只运行一次,因为现在您已经添加了else,它将始终返回一些内容。

如果未找到任何内容,返回 false 的正确方法是在 for 循环完成后添加return false

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

你应该使用这个:

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

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

你的函数将在第一个"返回"处停止和退出。如果在循环后添加返回 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)

我在

做我的反应应用程序时遇到了类似的问题。我们可以使用 Array.some(),如果至少有一个条件为真,这将返回true

const array = [1, 2, 3, 4, 5];
const twoExists = array.some(value => value === 2)
console.log(twoExists)
// expected output: true

相关文章: