@anthonykgross/extensible-array-filter
v1.0.7
Published
Install the package using npm:
Maintainers
Readme
Installation
Install the package using npm:
npm install @anthonykgross/extensible-array-filteror
yarn add @anthonykgross/extensible-array-filterUsage
Import the library in your TypeScript project:
import '@anthonykgross/extensible-array-filter';Declare an interface for your data:
interface Example {
id: number;
name: string;
tags: string[];
}Create a sample data array:
const data: Example[] = [
{ id: 1, name: 'Example 1', tags: ['tag1', 'tag2'] },
{ id: 2, name: 'Example 2', tags: ['tag2', 'tag3'] },
{ id: 3, name: 'Example 3', tags: ['tag1', 'tag3'] },
];Apply filters using the .where(...) method:
const result = data.where([
{ field: 'id', operator: '>', value: 1 },
{ field: 'name', operator: 'contains', value: 2 },
]);
// Expected output: [
// { id: 2, name: 'Example 2', tags: ['tag2', 'tag3'] },
// ]Apply filters using the .orWhere(...) method:
const result = data.orWhere([
{ field: 'id', operator: '==', value: 1 },
{ field: 'id', operator: '==', value: 2 },
]);
// Expected output: [
// { id: 1, name: 'Example 1', tags: ['tag1', 'tag2'] },
// { id: 2, name: 'Example 2', tags: ['tag2', 'tag3'] },
// ]Supported Filters
| Operator |Description|Filter values| |-------------------|---|---| | ||| | Generic ||| | < | less | Date \ Number | | <= | less or equal | Date \ Number | | == | equal | Date \ Number | | != | not equal | Date \ Number | | > | greater | Date \ Number | | >= | greater or equal | Date \ Number | | ||| | Boolean ||| | boolean-== | equal | Boolean | | boolean-!= | not equal | Boolean | | ||| | Date ||| | date-< | less | Date | | date-<= | less or equal | Date | | date-== | equal | Date | | date-!= | not equal | Date | | date-> | greater | Date | | date->= | greater or equal | Date | | ||| | Number ||| | number-< | less | Number | | number-<= | less or equal | Number | | number-== | equal | Number | | number-!= | not equal | Number | | number-> | greater | Number | | number->= | greater or equal | Number | | ||| | String ||| | string-< | less | String | | string-<= | less or equal | String | | string-== | equal | String | | string-!= | not equal | String | | string-> | greater | String | | string->= | greater or equal | String | | contains | equal | String | | strictly-contains | equal | String | | ||| | Any ||| | regex | equal | Any | | custom | - | Any |
Define your custom filter
const fn = (item: Example, value: any) => {
// where id === 1 or id === 2
return item.id === value || item.id === value+1
}
const result = data.where([
{ field: '?', operator: 'custom', value: 1 , test: fn },
]);
// Expected output: [
// { id: 1, name: 'Example 1', tags: ['tag1', 'tag2'] },
// { id: 2, name: 'Example 2', tags: ['tag2', 'tag3'] },
// ]