使用或运算符过滤angularjs

时间:2015-06-15 12:21:03

标签: angularjs for-loop

我有一个数组循环的国家,例子(这是一个多选框)

{Clicked : true, Name:USA,ID:1}, {Clicked :false, Name:China,ID:2}, {Clicked : true, Name:India,ID:4}

当选中一个项目(名称值)时,单击的值变为true。如果我知道所有值为true,我可以循环穿过countries数组来获取这些值吗? 一旦我得到了真正的值,我想使用OR运算符只传递一个id值,而不是全部,例如,如果它是1 || 4 || 2然后4应该通过。

尝试了什么

$scope.FilterCountries=function(){

   var Clicked=true;
   for(var i=0;i<=$scope.model.Countries.length;i++)
     {
      Clicked= $scope.model.Countries.Clicked[i];
      var ID= Clicked || $scope.model.Countries.ID[i];
     }
  }

以上当我选择一个值时,它会发回一个不同的ID,它会添加自己的值。

2 个答案:

答案 0 :(得分:1)

我仍然不确定你想要做什么,但你的代码似乎是错误的。我举了一个例子。

如果您的意思是按位操作,请参阅此处:MDN Bitwise operations

我希望它有所帮助。

$scope = {
  model: {
    Countries: [{
      Clicked: true,
      ID: 1
    }, {
      Clicked: true,
      ID: 2
    }, {
      Clicked: true,
      ID: 4
    }]
  }
};

$scope.FilterCountries = function() {

  var result = 0;
  for (var i = 0; i < $scope.model.Countries.length; i++) {

    if ($scope.model.Countries[i].Clicked === true) {
      //Bitwise operation ID: 1 and 2 and 4 would result in 7
      result = result | $scope.model.Countries[i].ID;
    }
  }

  return result;
};

document.write($scope.FilterCountries());

稍后您可以使用&amp; -Operator

测试是否已检查国家/地区
(7 & 4) === 4; // true 

答案 1 :(得分:0)

$scope.FilterCountries = function() {

 var result = 0;
 for (var i = 0; i < $scope.model.Countries.length; i++) {

  if ($scope.model.Countries[i].Clicked === true) {
  //Bitwise operation ID: 1 and 2 and 4 would result in 7
  result = result[i] | $scope.model.Countries[i].ID;
}
}
return result;
};