在AngularJS中过滤NOT等于

时间:2016-04-05 05:41:54

标签: arrays angularjs filter

我在客户端有一组对象。 数组中的对象如下所示:

{
    code: 0,
    short_name: 'a',
    type: 1
}

我尝试将此数组过滤为2个数组:

  1. 类型=== 1
  2. 使用类型!== 1
  3. 我这样做了:

    $scope.array1 = $filter('filter')(data, {type: 1}, true);
    $scope.array1 = $filter('filter')(data, {type: !1});
    

    但不平等不起作用......我该怎么办?

    谢谢!

3 个答案:

答案 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; });

在ES2015中

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