Takes a configuration object and returns a filter function operating on arrays. It will return a new array leaving the input array untouched. It work on nested property as well. For nodejs and browsers.
npm install --save smart-table-filter
yarn add smart-table-filter
import filter from 'smart-table-filter';
const items = [{foo: 'bar', bar: {blah: 'woo'}},{foo: 'swe', bar: {blah: 'woo'}},{foo: 'sweet', bar: {blah: 'wat'}}];
const filterFunc = filter({foo: [{value: 'swe'}], 'bar.blah': [{operator: 'is', value: 'woo'}]});
const output = filterFunc(items)
// > [{foo: 'swe', bar: {blah: 'woo'}}]
Predicate object definition keys will be a path to a property in your data items (you can use .(dot) for nested properties. Values will be arrays containing the following properties:
- type: the type to force coercion of your data item values (and the predicate value).
- string
- boolean
- number
- date
If not provided input value and data item value are return as they are
-
operator: the operator used to perform the check
- includes: check whether a string contains a substring (default)
- is: strict equality ( === )
- isNot: negation of "is" (!==)
- lt: lower than (<)
- gte: greater than or equal to (>=)
- gt: greater than (>)
- lte: lower than or equal to (<=)
- equals: loose equality (==)
- notEqualS: negation of "equals" (!=)
- anyOf: check whether a values belongs to a given set of values
-
value: the value to be checked against
npm test
or
yarn test
Only bugs and must come with a running reproduction of the issue