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))