1.0.7 • Published 12 months ago

@anthonykgross/extensible-array-filter v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

Installation

Install the package using npm:

npm install @anthonykgross/extensible-array-filter

or

yarn add @anthonykgross/extensible-array-filter

Usage

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

OperatorDescriptionFilter values
Generic
<lessDate \ Number
<=less or equalDate \ Number
==equalDate \ Number
!=not equalDate \ Number
>greaterDate \ Number
>=greater or equalDate \ Number
Boolean
boolean-==equalBoolean
boolean-!=not equalBoolean
Date
date-<lessDate
date-<=less or equalDate
date-==equalDate
date-!=not equalDate
date->greaterDate
date->=greater or equalDate
Number
number-<lessNumber
number-<=less or equalNumber
number-==equalNumber
number-!=not equalNumber
number->greaterNumber
number->=greater or equalNumber
String
string-<lessString
string-<=less or equalString
string-==equalString
string-!=not equalString
string->greaterString
string->=greater or equalString
containsequalString
strictly-containsequalString
Any
regexequalAny
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'] },
// ]
1.0.7

12 months ago

1.0.6

12 months ago

1.0.5

12 months ago

1.0.4

12 months ago

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago