角度过滤器 - 针对值数组过滤JSON结果

时间:2014-12-17 14:08:21

标签: javascript arrays json angularjs filter

我有一个JSON对象如下:

{"email":null,"fullList":true,"listOfSomething":[
{
"contactEmailAddress": "fred@test.com",
"somethingId": 11060767,
"other": "whatever"
},
{
"contactEmailAddress": "fred@test.com",
"somethingId": 8499447,
"other": "whatever"
}, {
"contactEmailAddress": "fred@test.com",
"somethingId": 3234664,
"other": "whatever"
},  {
"contactEmailAddress": "fred@test.com",
"somethingId": 3233245,
"other": "whatever"
}
]
,"numOfResults":22}

在角度中,我想通过一系列选定的ID过滤此列表,以匹配键中的键" SomethingID",#list; listOfSomething"

我要匹配的ID数组格式为:

[16199615,16199619]

我当前的过滤器只返回整个列表,未经过滤:

.filter('somethingFilter', ['somethingListService', function(somethingListService) {
domainsSelected = somethingListService.getSomethingSelected();
return function(array) {
    return array.filter(function(item) {
       return somethingSelected.indexOf(item.somethingId) === -1;
    });
};
}]);

我尝试了很多不同的方法,但是找不到一个数字数组与嵌套的JSON对象匹配的例子,它没有数字索引。

1 个答案:

答案 0 :(得分:2)

这是一个工作示例,我认为你想要实现的目标: http://jsfiddle.net/martinczerwi/kdmqvw19/3/

我注意到,如果找不到ID,你的过滤器会返回true,这就是整个数组被转储的原因。 ID数组的名称也错了。应该是:

return domainsSelected.indexOf(item.somethingId) !== -1;

在我的示例中,我已将数据中的ID添加到过滤器ID。