Javascript 从对象数组中创建按属性选择的公用函数

Javascript 从对象数组中创建按属性选择的公用函数,javascript,angularjs,Javascript,Angularjs,我有四个按不同属性从数组中选择的函数 if ($scope.filters.filter1) $scope.filteredEntries = $scope.filteredEntries.filter(function (o) { return o.field1 === $scope.filters.filter1 }); if ($scope.filters.filter2) $scope.filteredEntries = $scope.fi

我有四个按不同属性从数组中选择的函数

if ($scope.filters.filter1)
    $scope.filteredEntries = $scope.filteredEntries.filter(function (o)
    {
       return o.field1 === $scope.filters.filter1
    });

if ($scope.filters.filter2)
    $scope.filteredEntries = $scope.filteredEntries.filter(function (o)
    {
       return o.field2 === $scope.filters.filter2
    });
这个代码是可重复的,这是不好的。我想把select放在单独的函数中。但选择条件在所有情况下都是不同的。我可以使用条件作为参数还是什么?我该怎么做

我想在这个伪代码中做一些类似的事情:

expression = e => e.field == value;
miniFilter(expression);
...
function miniFilter(expression)
{
   $scope.filteredEntries = $scope.filteredEntries.filter(function (expression)
   {
      return expression;
   });
 }

希望我的意图是明确的。我不太熟悉js的方法,所以请原谅。

最初呈现的重复代码的解决方案:

var数据=[
{field1:'汤姆',field2:30},
{field1:'Max',field2:30},
{field1:'Max',field2:30}
];
var$scope={filters:{
过滤器1:'最大',
过滤器2:30
}
};
功能微型过滤器(输入,过滤器){
用于(过滤器中的var prop){
var filVal=过滤器[prop];
if(filVal)
input=input.filter(函数(项){
返回项['field'+prop.match(/\d+$/)[0]==filVal;
});
}
返回输入;
}
var结果=微型过滤器(数据,$scope.filters);
console.log(JSON.stringify(result))