我有一个数组循环的国家,例子(这是一个多选框)
{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,它会添加自己的值。
答案 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;
};