我在客户端有一组对象。 数组中的对象如下所示:
{
code: 0,
short_name: 'a',
type: 1
}
我尝试将此数组过滤为2个数组:
我这样做了:
$scope.array1 = $filter('filter')(data, {type: 1}, true);
$scope.array1 = $filter('filter')(data, {type: !1});
但不平等不起作用......我该怎么办?
谢谢!
答案 0 :(得分:5)
同样,如果您要前往filter
,请改用native method:
$scope.array1 = data.filter(function(x) { return x.type === 1; });
$scope.array2 = data.filter(function(x) { return x.type !== 1; });
$scope.array1 = data.filter(x => x.type === 1);
$scope.array2 = data.filter(x => x.type !== 1);
答案 1 :(得分:3)
你非常接近。您只需将第二个过滤器更改为:
NSArray *arr = @[@{@"first_name":@"B"},@{@"first_name":@"A"}];
NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"first_name" ascending:YES];
arr = [arr sortedArrayUsingDescriptors:@[desc]];
我还重命名了范围变量,否则它只会覆盖你的第一个过滤后的数组。
答案 2 :(得分:1)
对我来说,当{ type: '!1' }
作为最后一个参数true
使用时,给定的解决方案$filter('filter')(data, {type: 1}, true);
不起作用。但是使用函数对我有用(参见angular's doc):
$scope.array2 = $filter('filter')(data, function(value, index, array) {
return (value.type !== 1);
}, true);