Javascript 如果ng repeat中的值已经在另一个列表中,如何跳过该值?

Javascript 如果ng repeat中的值已经在另一个列表中,如何跳过该值?,javascript,angularjs,angularjs-ng-repeat,angularjs-filter,Javascript,Angularjs,Angularjs Ng Repeat,Angularjs Filter,例如,我有带有如下标签的个人数据: $scope.person.Groups = ['ios'] 和标签列表: $scope.tagsList = ['android', 'ios', 'pm'] 我怎么能只显示带有ng repeat的['android'、'pm'] 我试过: <li ng-repeat="tag in tagsList" ng-show="tag != person.Groups">{{tag}}</li> 但它不起作用 如何仅显示不在第二个数组

例如,我有带有如下标签的个人数据:

$scope.person.Groups = ['ios']
和标签列表:

$scope.tagsList = ['android', 'ios', 'pm']
我怎么能只显示带有ng repeat的['android'、'pm']

我试过:

<li ng-repeat="tag in tagsList" ng-show="tag != person.Groups">{{tag}}</li>
但它不起作用

如何仅显示不在第二个数组中的记录?

供您上下文使用。indexOf

首先,您声明$scope.person.Groups是错误的。你一步一步走,如下所示。首先创建$scope.person是一个对象,并将groups数组创建到该对象中,如下所示

   $scope.person = {};
   $scope.person.Groups = ['ios'];
   $scope.tagsList = ['android', 'ios', 'pm'];
你的html工作总是很好

<li ng-repeat="tag in tagsList" ng-show="person.Groups.indexOf(tag) == -1">{{tag}}</li>

对于

您应该使用过滤器。以下是您如何做到这一点:

HTML:


你应该使用过滤器。@Tarun-你说得对。您只需在html部件中使用indexOf,无需应用过滤器,但这不是理想的方法。我认为这是一个过滤器的工作!请看下面的答案。如果亲自访问我将拥有数组,如[{text:'ios'},{text:'android'}]?如果亲自访问我将拥有数组,如[{text:'ios'},{text:'android'}]?很简单,在过滤器中,您只需迭代person数组并与每次迭代的键“text”进行比较。像这样:angular.forEachcollection,functionitem{var flag=0;angular.forEachperson,functionsub_item{ifsub_item.text==item{flag=1;}}}ifflag==0{output.pushitem;}您能创建一个plunkr吗?你需要知道你错在哪里。
<li ng-repeat="tag in tagsList | arrFilter: person.Groups">{{tag}}</li>
app.filter('arrFilter', function() {
    return function(collection, person) {
        var output = [];
        angular.forEach(collection, function(item) {
            if(person.indexOf(item) == -1) {
                output.push(item);
            }
        })
        return output;
    }
})