【问题标题】:AngularJS check condition and return true or falseAngularJS 检查条件并返回 true 或 false
【发布时间】:2023-04-04 14:14:01
【问题描述】:

我有这样的html:

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

上面的html只有在函数isuser(user)返回false时才会显示。

我有一个这样的数组:

$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。 我该怎么做?

【问题讨论】:

  • 也发布用户对象
  • 请发帖user.id数组。
  • 已发布。检查更新的帖子

标签: javascript html arrays angularjs


【解决方案1】:

问题在于下面的语句

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

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

一种方法是通过传递一个回调函数作为参数来使用some方法。

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

【讨论】:

  • 这行得通。你的答案是最小的而且非常有效
  • 请看我的问题here
【解决方案2】:

试试这个对你有帮助

  $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 };

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多