Package Exports
- query-objects
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (query-objects) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
query-objects
Purpose
A utility library which filters objects from an array of objects based on a set of filter conditions.
const queryable = require('query-objects');
const users = [
{
firstName: 'George',
lastName: 'Eracleous',
age: 28
},
{
firstName: 'Erica',
lastName: 'Archer',
age: 50
},
{
firstName: 'Leo',
lastName: 'Andrews',
age: 20
}
];
const filters = [
{
field: 'age',
value: 30,
operator: 'lt'
},
{
field: 'firstName',
value: 'Erica',
operator: 'equals'
}
];
// Filter all users that are less than 30 years old AND their first name is Erica
const res = queryable(users).and(filters);
// Filter all users that are less than 30 years old OR their first name is Erica
const res = queryable(users).or(filters);
Contents
Installation
npm install filter-objects
Usage
- Create a queryable object using
queryable(arr)wherearris the array of objects you want to query.
const q = queryable(arr);- Finally get the result array using:
q.and(filters); //returns an array of all objects in `arr` that satisfy EVERY filter
q.or(filters); //returns an array of all objects in `arr` that satisfy SOME of the filtersFilters
field - The name of the property we will filter on
value - The value of the property we will filter on
operator - The filter operator. Supported operators equals, contains, notcontains, gt, gte, lt, lte, ne
matchMissing - If true the filter will be satisfied even if field property is not present on the object. Default is false.
matchEmpty - If true the filter will be satisfied even if value property is empty. Empty values are [], undefined, null, '' and {}. Default is false.
Contributing
This project is work in progress and we'd love more people contributing to it.
- Fork the repo
- Apply your changes
- Write tests
- Submit your pull request
For feedback or suggestions you can drop us a line at support@avocarrot.com
