Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit e93024f

Browse files
author
Casey Howard
committed
fix(filterFilter): Fix filtering using an object expression when the filter value is undefined
Fixes #10419
1 parent aac3c4a commit e93024f

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/ng/filter/filter.js

+4
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
151151
comparator = equals;
152152
} else if (!isFunction(comparator)) {
153153
comparator = function(actual, expected) {
154+
if (isUndefined(expected)) {
155+
return true;
156+
}
157+
154158
if (isObject(actual) || isObject(expected)) {
155159
// Prevent an object to be considered equal to a string like `'[object'`
156160
return false;

test/ng/filter/filterSpec.js

+12
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,18 @@ describe('Filter: filter', function() {
4848
});
4949

5050

51+
it('should not filter when property is undefined', function() {
52+
var items = [{name: 'a'}, {name: 'abc'}];
53+
expect(filter(items, {name: undefined})).toEqual([{name: 'a'}, {name: 'abc'}]);
54+
});
55+
56+
57+
it('should not filter when property is undefined', function() {
58+
var items = [{name: 'a'}, {name: 'abc'}, {deep: {name: 'abc'}}];
59+
expect(filter(items, {deep: {name: undefined}})).toEqual([{deep: {name: 'abc'}}]);
60+
});
61+
62+
5163
it('should take function as predicate', function() {
5264
var items = [{name: 'a'}, {name: 'abc', done: true}];
5365
expect(filter(items, function(i) {return i.done;}).length).toBe(1);

0 commit comments

Comments
 (0)