Merge pull request #4 from keathleydavidj/filter-query

Add .filter and .filterBy methods
This commit is contained in:
Joe L Wroten 2017-08-17 13:44:05 -05:00 committed by GitHub
commit d54a181fac
2 changed files with 30 additions and 0 deletions

View file

@ -10,6 +10,16 @@ module.exports = class Query {
return this.data; return this.data;
}; };
filter (func) {
this.data = this.data.filter(func);
return this;
};
filterBy (key, func) {
this.data = this.data.filter(item => func(item[key]));
return this;
};
search (key, term, score = 0) { search (key, term, score = 0) {
switch (typeof term) { switch (typeof term) {
case 'boolean': case 'boolean':

View file

@ -66,6 +66,26 @@ test('should sort by string name', () => {
expect(query[0].name).toBe('Dudley Conner'); expect(query[0].name).toBe('Dudley Conner');
}); });
test('should filter', () => {
let isAgeOver33 = a => a.age > 33;
let query = new Query(TestData)
.filter(isAgeOver33)
.results;
expect(query[0].name).toBe('Howard Buckley');
});
test('should filter by key', () => {
let isNumGT33 = num => num > 33;
let query = new Query(TestData)
.filterBy('age', isNumGT33)
.results;
expect(query[0].name).toBe('Howard Buckley');
});
test('should chain everything together', () => { test('should chain everything together', () => {
let query = new Query(TestData) let query = new Query(TestData)
.search('isActive', true) .search('isActive', true)