是否可以根据https://docs.angularjs.org/guide/filter过滤字符串数组而不只是一个字符串?
Object
答案 0 :(得分:0)
是的,为什么不呢?你可以这样做:
angular.module('yourModule', [])
.filter('filterFromArray', function() {
return function(input, arrayToMatch) {
input = input || [];
arrayToMatch= arrayToMatch|| [];
var l = input.length,
k = arrayToMatch.length,
out = [], i = 0,
map = {};
for (; i < k; i++) {
map[arrayToMatch[k]] = true;
}
for (i = 0; i < l; i++) {
if(map[input[i].name]){
out.push(input[i]);
}
}
return out;
};
});
然后你可以这样使用它:
$filter('filterFromArray')($scope.data, $scope.arrayOfStrings);
或表达式:
{{ data | filterFromArray:arrayOfStrings}}
您还可以添加更多参数,甚至可以匹配对象中的aq特定字段,而不仅仅是名称,但这取决于您。
答案 1 :(得分:0)
是的,你可以。这是一个演示http://plnkr.co/edit/e8yLSV3AwskKlscIPYvp?p=preview
angular.module('MyApp', [])
.controller('MyCtrl', MyCtrl)
.filter('customFilter', customFilter);
function customFilter () {
return function (input, arrayOfString) {
return input.filter( function( el ) {
return arrayOfString.indexOf( el.name ) < 0;
});
}
}