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>