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.
- Define filters with multiple conditions and connectors
- Apply filters to arrays of data
- Support for various data types and operators
Install the library using npm:
npm install js-array-filter
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']
});
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);
const data = [
[85, 'M'],
[70, 'F'],
[90, 'M']
];
const filteredData = data.filter(row => filter.filterRow(row));
console.log(filteredData); // Output: [[85, 'M'], [90, 'M']]
const data = [
[85, 'M'],
[70, 'F'],
[90, 'M']
];
const filteredData = filter.filterDataframe(data);
console.log(filteredData); // Output: [[85, 'M'], [90, 'M']]
filter.update({
conditions: [
{ variable: 'AGE', operator: 'lt', value: 75 }
],
connectors: []
});
const newFilteredData = data.filter(row => filter.filterRow(row));
console.log(newFilteredData); // Output: [[70, 'F']]
const filterString = filter.toString();
console.log(filterString);
const isValid = filter.validateFilterString(filterString);
console.log(isValid); // Output: true or false
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)
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)
eq
: Equal tone
: Not equal tonotMissing
: Not missing (not null or empty)missing
: Missing (null or empty)
Updates the filter with new filter and columns.
filter
(BasicFilter | string): The new filter object or filter string.columns
(ColumnMetadata[], optional): The new column metadata.
Applies the filter to a single row of data.
row
(ItemDataArray): The row of data to filter.
boolean
: True if the row passes the filter, false otherwise.
Applies the filter to a dataframe (array of rows).
data
(ItemDataArray[]): The dataframe to filter.
ItemDataArray[]
: The filtered dataframe.
Converts the filter to a string representation.
string
: The string representation of the filter.
Validates a filter string.
filterString
(string): The filter string to validate.
boolean
: True if the filter string is valid, false otherwise.
Run the tests using Jest:
npm test
This project is licensed under the MIT License. See the LICENSE file for details.
Dmitry Kolosov
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.