и HTML:

ой код. Пожалуйста, запустите скрипт, чтобы увидеть, как он работает:

var app = angular.module('myApp', []);

app.controller('listdata', function($scope, $http) {
var data = [{
    "name": "John",
    "queue": [{
        "number": "456",
        "status": "Unavailable"
    },
    {
        "number": "111",
        "status": "Unavailable"
    },
    {
        "number": "201",
        "status": "Paused"
    }],
    "phone": "7411173737"
},
{
    "name": "George",
    "queue": [{
        "number": "111",
        "status": "Paused"
    },
    {
        "number": "456",
        "status": "Unavailable"
    }],
    "phone": "8558855858"
},
{
    "name": "Hilary",
    "queue": [{
        "number": "456",
        "status": "Unavailable"
    }],
    "phone": "5454573737"
},
{
    "name": "Edmond",
    "queue": [{
        "number": "665",
        "status": "Unavailable"
    }],
    "phone": "7454543737"
}];
$scope.a = [];
$scope.users = [];
for(i=0;i<data.length;i++){
    for(j=0;j<data[i].queue.length;j++){
        if(data[i].queue[j].number == 111 || data[i].queue[j].number == 456){
            $scope.a.push(data[i]);
        }
    }
}
$scope.users = $scope.a;
//console.log($scope.users);
   $scope.filter111 = function (user) {
            return (user.queue.find(({number}) => number === '111'));
        }
    $scope.filter456 = function (user) {
           return (user.queue.find(({number}) => number === '456'));
        }
});

app.filter('unique', function() {
   return function(collection, keyname) {
      var output = [],
          keys = [];
      angular.forEach(collection, function(item) {
          var key = item[keyname];
          if(keys.indexOf(key) === -1) {
              keys.push(key);
              output.push(item);
          }
      });
      return output;
   };
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp">

<label class="switch">
  <input type="checkbox" ng-model="queue111">111
</label>
<label class="switch">
  <input type="checkbox" ng-model="queue456">456
</label>
<label class="switch">
  <input type="checkbox" ng-true-value='"Paused"' ng-false-value='' ng-model="paused">Paused
</label>
<div class="row" ng-controller="listdata">

  <div ng-repeat="user in users|filter: queue111? filter111: ''|unique:'name'|filter: queue456? filter456: ''|filter: paused track by $index">
    <p> {{user.name}} {{user.phone}}</p>
  </div>
</div>

</div>

Из приведенного выше кода мой массив данных содержит объекты, которые имеют имя пользователя, его номер телефона и очередь вызовов, к которой он принадлежит.

У меня есть четыре очереди вызовов 111 456 201 и 665 соответственно.

Один пользователь может находиться в любом количестве очередей вызовов. Я отфильтровал данные в контроллере так, что он показывает только пользователей, которые принадлежат либо к очереди 111, либо к очереди 456 во внешнем интерфейсе.

Таким образом, из моего кода пользователь Эдмонд принадлежит к очереди 665, следовательно, его данные не отображаются во внешнем интерфейсе. Остальные 3 пользователя принадлежат либо 111, 456, либо обоим, поэтому их данные отображаются на панели пользователя.

Тогда фильтр 111 покажет только тех пользователей, которые принадлежат очереди 111. Фильтр 456 покажет только тех пользователей, которые принадлежат очереди 456.

Теперь у пользователя есть статус для каждой очереди. Статус может быть как угодноUnavailable, Paused&nbsp;и т.п.

У меня есть фильтр под названиемPaused&nbsp;во внешнем интерфейсе, как показано в коде, и этот фильтр должен выводить только тех пользователей, чей статус приостановлен только в очереди 111 или 456. Он не должен выводить пользователя, если его статус не приостановлен в 111 или 456.

Когда я нажимаюPaused&nbsp;Фильтр отображает имя Джон и Джордж. Этот вывод на самом деле неверен, потому что я хочу отображать только те, чей статус «Приостановлено» в очереди 111 или 456. Таким образом, в выводе результат для Джорджа правильный, так как его статус «Приостановлен» в очереди 456, но для Джона вывод неправильный, поскольку он не приостановлен в очереди 111 или 456. Он приостановлен в очереди 201 и по-прежнему отображается Приостановленный фильтр, который не является ожидаемым выходным сигналом.

Ожидаемый вывод - он должен отображать данные только для Джорджа, поскольку он фактически принадлежит к одной из двух очередей (111 или 456), а его статус приостанавливается в одной из очередей (111 или 456), которые я отображаю в интерфейсе, когда я щелкните фильтр «Приостановлено».&nbsp;Как мне это сделать?