AngularJS 过滤器包括负数

AngularJS filter includes negative number

当我用类似数字过滤对象数组时:

$scope.users = [{name:'John', id:-1},
                         {name:'Mary', id:1},
                         {name:'Mike', id:2},
                         {name:'Adam', id:3}];

var selected = $filter('filter')($scope.users, {id: $scope.target});

如果 target = 1,则所选结果将包括 John 和 Mary。但我只希望包含完全相同的 ID,即 ID 为 1 的 Mary。为什么它包括负数?我怎样才能防止这种情况发生?

您可以将过滤器的第三个参数即比较器设置为真

$scope.users = [{name:'John', id:-1},
                         {name:'Mary', id:1},
                         {name:'Mike', id:2},
                         {name:'Adam', id:3}];

var selected = $filter('filter')($scope.users, {id: $scope.target}, true);

true 是 shorthand 用于:

function(actual, expected) { 
    return angular.equals(actual, expected)
} // This is essentially strict comparison of expected and actual.

Plunkr.