相对于角度控制器中的另一个阵列过滤阵列项目

filter array items with respect to another array in angular controller

本文关键字:阵列 另一个 过滤 项目 控制器 相对于      更新时间:2023-09-26

我有一个列表

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

我想过滤这个列表相对于另一个列表作为,

$scope.list2=[1,3];

这里我想要筛选list1,这样只剩下那些在list2中的对象项。即

过滤后

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

我可以使用拼接功能来完成此操作。但我想问一下,是否可以在不使用循环的情况下使用$filter来实现这一点。

使用开源项目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();

这边

//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>