0.1.4 • Published 6 months ago
js-array-filter v0.1.4
js-array-filter
js-array-filter is a TypeScript library for filtering arrays based on conditions. It provides functionalities to define filters and apply them to arrays of data.
Features
- Define filters with multiple conditions and connectors
- Apply filters to arrays of data
- Support for various data types and operators
Installation
Install the library using npm:
npm install js-array-filter
Usage
Creating a Filter instance
import Filter from 'js-array-filter';
const columns = [
{ name: 'AGE', dataType: 'number' },
{ name: 'SEX', dataType: 'string' }
];
const filter = new Filter('parsed', columns, {
conditions: [
{ variable: 'AGE', operator: 'gt', value: 80 },
{ variable: 'SEX', operator: 'eq', value: 'M' }
],
connectors: ['and']
});
Creating a Filter instance from a string
import Filter from 'js-array-filter';
const columns = [
{ name: 'AGE', dataType: 'number' },
{ name: 'SEX', dataType: 'string' }
];
const filterString = "AGE gt 80 and SEX eq 'M'";
const filter = new Filter('parsed', columns, filterString);
Applying the Filter
const data = [
[85, 'M'],
[70, 'F'],
[90, 'M']
];
const filteredData = data.filter(row => filter.filterRow(row));
console.log(filteredData); // Output: [[85, 'M'], [90, 'M']]
Applying the Filter to a Dataframe
const data = [
[85, 'M'],
[70, 'F'],
[90, 'M']
];
const filteredData = filter.filterDataframe(data);
console.log(filteredData); // Output: [[85, 'M'], [90, 'M']]
Updating the Filter
filter.update({
conditions: [
{ variable: 'AGE', operator: 'lt', value: 75 }
],
connectors: []
});
const newFilteredData = data.filter(row => filter.filterRow(row));
console.log(newFilteredData); // Output: [[70, 'F']]
Converting Filter to String
const filterString = filter.toString();
console.log(filterString);
Validating Filter String
const isValid = filter.validateFilterString(filterString);
console.log(isValid); // Output: true or false
Operators
String Operators
lt
: Less thanle
: Less than or equal togt
: Greater thange
: Greater than or equal toin
: In arraynotin
: Not in arrayeq
: Equal tone
: Not equal tostarts
: Starts withends
: Ends withcontains
: Containsnotcontains
: Does not containregex
: Matches regular expressionnotMissing
: Not missing (not null or empty)missing
: Missing (null or empty)
Number Operators
lt
: Less thanle
: Less than or equal togt
: Greater thange
: Greater than or equal toin
: In arraynotin
: Not in arrayeq
: Equal tone
: Not equal tonotMissing
: Not missing (not null or empty)missing
: Missing (null or empty)
Boolean Operators
eq
: Equal tone
: Not equal tonotMissing
: Not missing (not null or empty)missing
: Missing (null or empty)
Methods
update
Updates the filter with new filter and columns.
Parameters
filter
(BasicFilter | string): The new filter object or filter string.columns
(ColumnMetadata[], optional): The new column metadata.
filterRow
Applies the filter to a single row of data.
Parameters
row
(ItemDataArray): The row of data to filter.
Returns
boolean
: True if the row passes the filter, false otherwise.
filterDataframe
Applies the filter to a dataframe (array of rows).
Parameters
data
(ItemDataArray[]): The dataframe to filter.
Returns
ItemDataArray[]
: The filtered dataframe.
toString
Converts the filter to a string representation.
Returns
string
: The string representation of the filter.
validateFilterString
Validates a filter string.
Parameters
filterString
(string): The filter string to validate.
Returns
boolean
: True if the filter string is valid, false otherwise.
Running Tests
Run the tests using Jest:
npm test
License
This project is licensed under the MIT License. See the LICENSE file for details.
Author
Dmitry Kolosov
Contributing
Open an issue or submit a pull request for any improvements or bug fixes.
For more details, refer to the source code and the documentation.