Javascript AngularJS:如何过滤除一个属性之外的对象数组
Angular$filter可以对对象数组进行字符串模糊搜索 但是我的每个对象都有一个base64 pic属性Javascript AngularJS:如何过滤除一个属性之外的对象数组,javascript,angularjs,angularjs-filter,Javascript,Angularjs,Angularjs Filter,Angular$filter可以对对象数组进行字符串模糊搜索 但是我的每个对象都有一个base64 pic属性 var MyObjects = [{ property1: 'ab', property2: 'cd', pic: '4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBw.....' }, { property1: 'ef', property2: 'gh', pi
var MyObjects = [{
property1: 'ab',
property2: 'cd',
pic: '4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBw.....'
}, {
property1: 'ef',
property2: 'gh',
pic: '4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBw.....'
}, {
....
}],
result = $filter('filter')(MyObjects, $scope.searchText);
如何在模糊搜索中除去pic属性?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);
这就是我最终实现它的方式。角度自定义过滤器似乎是解决此类问题的方法,但是在这个实现中,您可以通过添加另一个
&&key!=“unwantedKey”
。键的值必须是一个字符串,indexOf才能工作,因此typeof
部分确保我们不会得到任何数字等ID
$scope.search = function(item){
for (var key in item){
if (typeof key === "string" && key != "pic"){
if(item[key].indexOf($scope.query) > -1){
return true;
}
}
}
return false;
};