Javascript 通过角度收集快速过滤
我知道这很琐碎,但我有一个疑问需要澄清。 我有一个集合Javascript 通过角度收集快速过滤,javascript,angularjs,filter,Javascript,Angularjs,Filter,我知道这很琐碎,但我有一个疑问需要澄清。 我有一个集合vm.groups,它几乎有1000个对象。现在,每个对象都有名称、id、链接等属性字段 网格仅显示名称和id 现在,我们在一个文本框中输入一些文本,我们必须根据输入的内容过滤数据,但过滤只能在对象的名称和id字段中进行,而不能在对象中存在的其他字段中进行。 所以这两件事都可以做 1) 我从只有名称和id字段的原始集合对象创建临时集合,然后将集合绑定到视图 // vm.groups.forEach(function(element)
vm.groups
,它几乎有1000个对象
。现在,每个对象都有名称、id、链接等属性字段
网格仅显示名称和id
现在,我们在一个文本框中输入一些文本,我们必须根据输入的内容过滤数据,但过滤只能在对象的名称和id字段中进行,而不能在对象中存在的其他字段中进行。
所以这两件事都可以做
1) 我从只有名称和id字段的原始集合对象创建临时集合,然后将集合绑定到视图
// vm.groups.forEach(function(element) {
// vm.displayedFieldGroups.
// push({name: element.name,id: element.id,transformedId: element.transformedId});
// });
2) 或者,我创建一个自定义过滤器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字段
因此,我需要创建一个自定义过滤器,或者选择我描述的第一种方法。
您的假设是正确的,过滤器将遍历源数组中的每个项,并在每次有摘要周期时运行过滤器函数
您应该继续使用第一种方法。如果要对(1)使用过滤器,那么为什么要使逻辑过于复杂并创建临时集合?您希望如何筛选(1)方法中的项目?@Stanislav Kvitash这是一个遗留应用程序。已经实现了一个过滤器,但它只遍历对象中的所有字段。我只需要过滤对象的名称和id字段。