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字段。