【问题标题】:filter array items with respect to another array in angular controller相对于角度控制器中的另一个数组过滤数组项
【发布时间】:2015-04-01 09:44:23
【问题描述】:

我有一个列表,

$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 而不使用循环来完成。

【问题讨论】:

  • underscore.js 怎么样?我非常喜欢在没有循环的情况下完成这类任务。

标签: javascript arrays angularjs filter


【解决方案1】:

你可以通过开源项目 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>';
&lt;script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 2016-01-10
    • 2016-06-29
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2019-10-03
    • 2021-04-01
    相关资源
    最近更新 更多