AngularJS检查条件并返回true或false

时间:2019-01-14 07:51:13

标签: javascript html arrays angularjs

我有这样的html:

<td><span ng-if="isuser(user) == false" type="button" >not allowed</span> </td>

仅当函数isuser(user)返回false时,才会显示上述html。

我有一个像这样的数组:

$scope.list = ["456", "111", "459"];

现在,用户对象具有名为id的数组。这个id数组包含一个number键,其值可以是456111459,有时也可以是empty

用户对象:

{"name":"pravin","status":"Live","id":[{"number":"111"}],"msg":"test"}

这是isuser函数:

$scope.isuser = function(user) {
  for (var i = 0; i < $scope.list.length; i++){
  var exists = user.id.find(({number}) => number === $scope.list[i]);
  }
if (exists)
  return true;
else
  return false;
};

但这总是返回false。

我希望for循环检查列表数组中是否不存在数字键的值,然后仅返回false。  我该怎么办?

2 个答案:

答案 0 :(得分:2)

问题在于以下声明

var exists = user.id.find(({number}) => number === $scope.list[i]);

每次exists变量都会更新,并且始终会得到最后的更改。

一种方法可能是通过传递 callback 函数作为参数来使用some方法。

$scope.isuser = function(user) {
   var exists = user.id.some(({number}) => $scope.list.includes(number));
   return exists;
}

答案 1 :(得分:1)

尝试一下将为您提供帮助

  $scope.isuser = function(user) {
       var exists = false;
    for (var i = 0; i < $scope.list.length; i++){
      exists = user.id.find(({number}) => number === $scope.list[i]);
    }
     if(i==$scope.list.length-1){
      if (exists)
        return true;
      else
        return false;
      }
  loop };