【问题标题】:Angular filter - filter JSON results against array of valuesAngular 过滤器 - 根据值数组过滤 JSON 结果
【发布时间】:2014-12-17 14:08:20
【问题描述】:

我有一个 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}

在 Angular 中,我想通过一组选定的 ID 过滤此列表,以匹配键“listOfSomething”中的键“SomethingID”

我要匹配的 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 对象匹配的示例。

【问题讨论】:

  • Davin - 我的错误,是在发布问题之前尝试混淆公司敏感代码并忘记更改变量名。

标签: javascript arrays json angularjs filter


【解决方案1】:

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

我注意到,如果未找到 ID,您的过滤器将返回 true,这就是转储整个数组的原因。 ID 数组的名称也是错误的。应该是:

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

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

【讨论】:

  • 太完美了——真不敢相信我没有发现那个明显的错误,我研究代码太久了! - 谢谢马丁泽维!
  • 不客气,如果它适合你,请接受答案;)
猜你喜欢
  • 2018-03-21
  • 1970-01-01
  • 2019-10-26
  • 2015-02-04
  • 2016-10-14
  • 2023-03-28
  • 2021-03-22
  • 1970-01-01
  • 2020-07-31
相关资源
最近更新 更多