AngularJS:如何过滤对象阵列除了一个属性

Che*_*Lin 8 javascript angularjs angularjs-filter

Angular $ filter可以对Object Array进行字符串模糊搜索,

但是我的每个对象都有一个base64 pic的属性.

var MyObjects = [{
    property1: 'ab',
    property2: 'cd',
    pic: '4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBw.....' 
}, {
    property1: 'ef',
    property2: 'gh',
    pic: '4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBw.....' 
}, {
    ....


}],

result = $filter('filter')(MyObjects, $scope.searchText);
Run Code Online (Sandbox Code Playgroud)

我怎样才能在模糊搜索中除了pic属性?

Nic*_*ick 1

Angular 的过滤器可以将函数作为参数来过滤数组。过滤器将选择函数返回 true 的项目。

您可以使用此功能来实现您想要的目的。

这是官方文档

因此,您可以执行类似的操作,仅将搜索文本与您想要的两个属性进行比较:

var filterFunction = function(item) {
    var val = $scope.searchText
    return item.property1.indexOf(val || '') !== -1 || item.property2.indexOf(val || '') !== -1;
}

result = $filter('filter')(MyObjects, filterFunction, $scope.searchText);
Run Code Online (Sandbox Code Playgroud)

这是一个演示这种效果的小提琴。