检查JavaScript数组中是否存在值

检查JavaScript数组中是否存在值,javascript,Javascript,我有以下代码片段 $scope.functionName = function(id) { var flag = true; var numbers = [1, 3, 30]; for (var i = 0; i < numbers.length; i++) { if (id == numbers[i]) { flag = false; } else { flag = true; } } if (flag == true

我有以下代码片段

$scope.functionName = function(id) {
  var flag = true;
  var numbers = [1, 3, 30];

  for (var i = 0; i < numbers.length; i++) {
    if (id == numbers[i]) {
      flag = false;
    } else {
      flag = true;
    }
  }
  if (flag == true) {
    console.log("this is true");
  }
  if (flag == false) {
    console.log("this is true");
  }

}
$scope.functionName=函数(id){
var标志=真;
变量数=[1,3,30];
对于(变量i=0;i

我要执行的是,如果输入值在数组中,
标志
值应该是
,如果不是,它应该是
。但是,在这个代码段中,尽管流在之后进入for循环,但它不会进入任何if条件。进入for循环后,它直接输出“this is true”
标志始终为true。

不需要循环数组,只需使用indexOf。另外,尝试对数字使用数字类型,对布尔型使用布尔类型,这两种类型都使用字符串

$scope.functionName = function(id)
{
    var numbers = [1, 3, 30];

    var flag = numbers.indexOf(parseInt(id, 10)) > -1;  // Convert to number just in case

    if(flag === true)
    {
        console.log("this is true");
    }
    if(flag === false)
    {
        console.log("this is true");
    }
}
当值等于数组中的值时添加语句

 $scope.functionName = function(id) {
      var flag = true;
      var numbers = [1, 3, 30];

      for (var i = 0; i < numbers.length; i++) {
        if (id == numbers[i]) {
          flag = false;
          break;
        } 
      }
      if (flag == true) {
        console.log("this is true");
      }
      if (flag == false) {
        console.log("this is false");
      }

    }
$scope.functionName=函数(id){
var标志=真;
变量数=[1,3,30];
对于(变量i=0;i
以下是一种更清晰的方法,可以帮助您实现目标

checkIfNumberIsInArray = function(number, arr) {
  return arr.includes(number)
}

console.log(checkIfNumberIsInArray(1, [1,2,3,4,5])) // true
console.log(checkIfNumberIsInArray(6, [1,2,3,4,5])) // false

请参见

为什么要使用
“true”
“false”
而不是
true
false
?感谢您指出@jornsharpe。即使我将标志更改为布尔值,流仍然不会进入内部比较if条件。请尝试一些较短的操作,例如
$scope.functionName=function(id){return[1,3,30]。includes(id)}
这两个
控制台。log
语句都说“this is true”。而
else
子句则是浪费时间。