2015-04-01 48 views
0

另一个阵列我有一个列表作为过滤器阵列的物品,相对于在角控制器

$scope.list1= [{"name":"name1","id":1},{"name":"name2","id":2},{"name":"name3","id":3},{"name":"name4","id":4}]; 

我想相对于另一个列表以过滤该列表,

$scope.list2=[1,3]; 

在这里,我想筛选器list1,以便只有那些对象项保留在列表2中。即

过滤

$scope.list1= [{"name":"name1","id":1},{"name":"name3","id":3}]; 

后,我可以利用拼接功能做到这一点。但是我想问一下,是否可以使用$ filter完成而不使用循环。

+0

underscore.js怎么样?我喜欢做这些没有循环的任务。 – namelivia 2015-04-01 09:49:15

回答

0

您可以轻松地做到这一点与开源项目jinqJs http://www.jinqJs.com

Fiddle

var list1= [{"name":"name1","id":1},{"name":"name2","id":2},{"name":"name3","id":3},{"name":"name4","id":4}]; 
var list2= [1,3]; 

var result = jinqJs().from(list1).where(function(row){ 
    return (list2.indexOf(row.id) > -1); 
}).select(); 

OR

这样

//Use jsJinq.com open source library 
 
var list1= [{"name":"name1","id":1},{"name":"name2","id":2},{"name":"name3","id":3},{"name":"name4","id":4}]; 
 
var list2= [1,3]; 
 

 
var result = jinqJs().from(list1).join(list2).on('id').select(); 
 

 
document.body.innerHTML += '<pre>' + JSON.stringify(result, null, 4) + '</pre>';
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>