Angularjs 如何从数组中筛选哪些筛选成员?

Angularjs 如何从数组中筛选哪些筛选成员?,angularjs,Angularjs,我有下一个数组: var companies = [ { id:1, members : ['alex', 'john','nick'] }, { id:2, members : ['alex', 'john','nick'] }, { id:3, members : ['a

我有下一个数组:

var companies = [
        {
            id:1,
            members : ['alex', 'john','nick']
        },
        {
            id:2,
            members : ['alex', 'john','nick']
        },
        {
            id:3,
            members : ['alex']
        },
        {
            id:3,
            members : ['nick']
        }
    ]
我听过很多公司的报道

<div ng-repeat=comp in companies |filter: someFilter>{{comp.id}}</div>
但它不起作用
您需要查看您的值中的列表(即
成员属性),以查看是否至少可以找到一个与筛选参数匹配的项:

angular.module('app', [])
.filter('myfilter', function() {
  return function(value, expected) {
    return value && value.members && (value.members || []).indexOf(expected) >= 0; // this checks if at least one value from members matches the given filter param
  };
})
然后按如下方式使用:

<div ng-repeat=comp in companies | myfilter:'nick'>{{comp.id}}</div>
然后用作:

<div ng-repeat=comp in companies | myfilter:['nick','john']>{{comp.id}}</div>
然后,您还可以将其用于或效果:

<div ng-repeat=comp in companies | myfilter:'every':['nick','john']>{{comp.id}}</div>

<div ng-repeat=comp in companies | myfilter:'some':['nick','john']>{{comp.id}}</div>
{{comp.id}
{{comp.id}}

要列出nick是成员的记录,还是nick和john都是成员的记录?我要列出两个案例。分别列出如何将数组作为参数传递?因为如果我有很多成员,如何添加大量的“| myfilter:'name'”?请参见编辑-解释如何获得这些信息,如果需要,还可以进一步自定义过滤器
angular.module('app', [])
.filter('myfilter', function() {
  return function(value, expected) {
    return value && value.members && 
       (expected || []).every(function(exp) { return value.members.indexOf(exp) >= 0; }) 
  };
})
<div ng-repeat=comp in companies | myfilter:['nick','john']>{{comp.id}}</div>
.filter('myfilter', function() {
  return function(value, type, expected) {
    return value && value.members && 
       (expected || [])[type](function(exp) { return value.members.indexOf(exp) >= 0; }) 
  };
})
<div ng-repeat=comp in companies | myfilter:'every':['nick','john']>{{comp.id}}</div>

<div ng-repeat=comp in companies | myfilter:'some':['nick','john']>{{comp.id}}</div>