2015-04-01 47 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>