快速过滤Angular Collection

时间:2018-01-11 12:48:16

标签: javascript angularjs filter

我知道这是微不足道的,但我有一个疑问需要澄清。 我的收藏集'rule' => function ($value, $context) { if ($value < 10) { return __('Error message for value < 10'); } else if ($value > 10 && $value <20) { return __('Error message for value between 10 and 20'); } return true; }, 差不多vm.groups。现在,每个对象都有1000 objects

网格仅显示name, id, links etc. property fields

现在,有一个文本框,我们输入一些文本,我们必须根据我们输入的内容过滤数据,但过滤必须仅在对象的名称和id字段内发生,而不是在其他字段存在在对象内。

所以,这两件事都可以完成,

1)我从原始集合对象创建一个临时集合,只有name和id字段,然后将集合绑定到view。

name and id

2)或者,我创建了一个自定义过滤器 // vm.groups.forEach(function(element) { // vm.displayedFieldGroups. // push({name: element.name,id: element.id,transformedId: element.transformedId}); // });

vm.customSearch

在视图中vm.customSearch = function(searchVal) { if(vm.filter.length) { if(vm.filter.toLowerCase().indexOf(searchVal.name.toLowerCase) !== -1 || vm.filter.toLowerCase().indexOf(searchVal.name.toLowerCase) !== -1) { console.log(searchVal); return true; }else { return false; } } else { console.log(searchVal); return true; } };

但我认为vm.groups | filter: vm.customSearch

我是对的吗? 哪种方法正确?

更新

这是针对遗留应用程序的。已经实现了一个过滤器,但只是遍历了对象中的所有字段。我只需要过滤对象的名称和id字段。

因此,second method is slower because each value in the collection would be passed to the filter which is obviously tedious for huge collection

1 个答案:

答案 0 :(得分:1)

您认为过滤器会遍历源数组中的每个项目,并且每次有一个摘要周期时都会运行过滤器功能。

您应该继续第一种方法。

相关问题