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-filterimport 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 falselt: 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 testThis 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.