Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

filter-data

thundermiracle2.3kMIT0.6.1TypeScript support: included

simple, fast data filter

match-sorter, data filter, filter data, search data, datatable, fast search

readme

filter-data

npm version dependencies Status CircleCI codecov

Description

Simple but fast data filter.

Examples

  1. Example In Browser
  2. Example In React

Benchmark

100 Records(ms)

*The results are little different in partial search.

| | match-sorter (6.3.1) | fuse.js (6.6.2) | filter-data (0.2.0) | | :--- | :--: | :-: | :--: | | match all, 1 key | 10.947ms | 4.244ms | 1.827ms | | no match, 1 key | 0.523ms | 2.385ms | 2.958ms | | match partial, 1 key | 0.232ms | 0.318ms | 2.475ms | | match all, 2 keys | 1.472ms | 0.465ms | 2.209ms | | no match, 2 keys | 0.188ms | 0.513ms | 2.522ms | | match partial, 2 keys | 0.191ms | 0.318ms | 2.475ms | | match all, 1 key, slice(0,10) | 0.192ms | 0.206ms | 0.388ms | | no match, 1 key, slice(0,10) | 0.101ms | 0.317ms | 0.079ms | | match partial, 1 key, slice(0,10) | 0.107ms | 0.188ms | 2.807ms | | input empty | 0.114ms | 0.095ms | 0.033ms |

10000 Records(ms)

*The results are little different in partial search.

| | match-sorter (4.0.2) | fuse.js (3.4.6) | filter-data (0.2.0) | | :--- | :--: | :-: | :--: | | match all, 1 key | 21.439ms | 49.336ms | 16.884ms | | no match, 1 key | 18.239ms | 33.312ms | 6.382ms | | match partial, 1 key | 18.754ms | 22.56ms | 3.805ms | | match all, 2 keys | 22.815ms | 22.524ms | 10.416ms | | no match, 2 keys | 18.096ms | 33.232ms | 3.744ms | | match partial, 2 keys | 16.821ms | 27.052ms | 3.094ms | | match all, 1 key, slice(0,10) | 10.614ms | 12.692ms | 0.106ms | | no match, 1 key, slice(0,10) | 9.808ms | 19.709ms | 0.111ms | | match partial, 1 key, slice(0,10) | 9.593ms | 16.094ms | 0.393ms | | input empty | 10.571ms | 6.985ms | 0.03ms |

Install From Browser

<script src="https://cdn.jsdelivr.net/npm/filter-data@0.2.0/dist/filterdata.min.js"></script>

Installation

filter-data is available as an npm package.

npm install --save filter-data

Usage

From Browser

import from FilterData object. And others are the same with From npm

const { filterData, SearchType } = FilterData;
.
.
.

From npm

  1. search single key only.

     import { filterData, SearchType } from 'filter-data';
    
     // search firstName contains 'dan' and age < 20
     const searchConditions = [
       {
         key: 'firstName',
         value: 'dan',
         type: SearchType.LK,
       },
       {
         key: 'age',
         value: 20,
         type: SearchType.LT,
       },
     ];
    
     const result = filterData(data, searchConditions);
     // output:
     <!-- [
       { firstName: 'Daniel', age: 14 },
       { firstName: 'Dan', age: 18 },
     ] -->
  2. search multiple keys.

     import { filterData, SearchType } from 'filter-data';
    
     // search firstName&lastName contains 'dan' and age < 20
     const searchConditions = [
       {
         key: ['firstName', 'lastName'],
         value: 'dan',
         type: SearchType.LK,
       },
       {
         key: 'age',
         value: 20,
         type: SearchType.LT,
       },
     ];
    
     const result = filterData(data, searchConditions);
     // output:
     <!-- [
       { firstName: 'Daniel', lastName: 'Johnson', age: 13 },
       { firstName: 'Jack', lastName: 'Danny', age: 19 },
     ] -->
  3. caseSensitive.

     import { filterData, SearchType } from 'filter-data';
    
     // search firstName contains 'dan'
     const searchConditions = [
       {
         key: 'firstName',
         value: 'dan',
         type: SearchType.LK,
       },
     ];
    
     const result = filterData(data, searchConditions, { caseSensitive: true });
     // output:
     <!-- [
       { firstName: 'Jordan', age: 17 },
     ] -->
  4. offset & limit.

     import { filterData, SearchType } from 'filter-data';
    
     // search firstName contains 'dan'
     const searchConditions = [
       {
         key: 'firstName',
         value: 'dan',
         type: SearchType.LK,
       },
     ];
    
     const result = filterData(data, searchConditions, { caseSensitive: true, offset: 10, limit: 10 });
     // output:
     <!-- [
       { firstName: 'Jordan', age: 17 },
       .
       .
       .
       max 10 records
     ] -->
  5. search nested object.

     import { filterData, SearchType } from 'filter-data';
    
     // search firstName in father's sub object equals to 'dan'
     const searchConditions = [
       {
         key: 'father.firstName', // or key: [['father', 'firstName']]
         value: 'dan',
         type: SearchType.EQ,
       },
     ];
    
     const result = filterData(data, searchConditions);
     // output:
     <!-- [
       { firstName: 'Jordan', age: 17, father: { firstName: 'dan', age: 50 } },
     ] -->

Instructions

No. Parameter required Default Description
1 data | array of object for filtering
2 searchConditions | array of searchCondition; { key: 'search column', value: 'search value', type: 'search type' }
3 options | { caseSensitive: false, includeNull: false, offset: undefined, limit: undefined } includeNull: include data even key is not exist or value is null

SearchType

  • SearchType.EQ: equal
  • SearchType.GT: greater than
  • SearchType.GTE: greater than or equal
  • SearchType.LT: less than
  • SearchType.LTE: less than or equal
  • SearchType.LK: like
  • SearchType.NE: not equal
  • SearchType.NLK: not like

License

This project is licensed under the terms of the MIT license.

changelog

filter-data

0.6.1

Patch Changes

  • #176 ea15c75 Thanks @renovate! - Updated dependency prettier to ^3.3.3.

  • #177 72dc3da Thanks @renovate! - Updated dependency packageManager to `pnpm@9.6.0. Updated dependency@swc/coreto^1.7.3. Updated dependency@types/nodeto^20.14.13. Updated dependency@types/ramdato^0.30.1. Updated dependencyrimrafto^5.0.9. Updated dependencytsxto^4.16.3. Updated dependencytypescriptto^5.5.4`.

  • #174 5a7f793 Thanks @renovate! - Updated dependency @changesets/cli to ^2.27.7.

  • #179 6254e39 Thanks @renovate! - Updated dependency rimraf to ^6.0.1.

  • #175 ca07b4a Thanks @renovate! - Updated dependency typescript to ^5.5.3.

  • #183 ecaccc3 Thanks @renovate! - Updated dependency @types/node to ^20.16.3.

  • #169 051d9c3 Thanks @renovate! - Updated dependency @types/node to ^20.13.0.

  • #161 8020d74 Thanks @renovate! - Updated dependency packageManager to `pnpm@8.15.8. Updated dependencyramdato^0.30.0. Updated dependency@swc/coreto^1.4.17. Updated dependency@types/nodeto^20.12.7. Updated dependencytsxto^4.7.3. Updated dependencytypescriptto^5.4.5`.

  • #165 27e7565 Thanks @renovate! - Updated dependency tsx to ^4.8.2.

  • #182 f9c46eb Thanks @renovate! - Updated dependency packageManager to `pnpm@9.9.0. Updated dependency@swc/coreto^1.7.22. Updated dependency@types/nodeto^20.16.2. Updated dependency@types/ramdato^0.30.2. Updated dependencytslibto^2.7.0. Updated dependencytsxto^4.19.0`.

  • #171 1230fad Thanks @renovate! - Updated dependency packageManager to `pnpm@9.4.0. Updated dependencyramdato^0.30.1. Updated dependency@changesets/clito^2.27.6. Updated dependency@swc/coreto^1.6.6. Updated dependency@types/nodeto^20.14.9. Updated dependencytslibto^2.6.3. Updated dependencytsxto^4.16.0. Updated dependencytypescriptto^5.5.2`.

  • #172 05b9f38 Thanks @renovate! - Updated dependency prettier to ^3.3.2.

  • #181 6afcc91 Thanks @renovate! - Updated dependency @swc/core to ^1.7.5. Updated dependency @types/node to ^20.14.14.

  • #166 280afe9 Thanks @renovate! - Updated dependency @types/node to ^20.12.8.

  • #168 da04a25 Thanks @renovate! - Updated dependency @types/node to ^20.12.14.

  • #164 1082acf Thanks @renovate! - Updated dependency packageManager to `pnpm@9.0.6`.

  • #167 1f31cd5 Thanks @renovate! - Updated dependency packageManager to `pnpm@9.1.4. Updated dependency@changesets/clito^2.27.5. Updated dependency@rollup/plugin-commonjsto^25.0.8. Updated dependency@swc/coreto^1.5.24. Updated dependency@types/nodeto^20.12.13. Updated dependency@types/ramdato^0.30.0. Updated dependencyrimrafto^5.0.7. Updated dependencyrollup-plugin-dtsto^6.1.1. Updated dependencytsxto^4.11.0`.

  • #180 4e8dfd5 Thanks @renovate! - Updated dependency rimraf to ^5.0.10. Updated dependency tsx to ^4.16.5.

  • #170 712ae6d Thanks @renovate! - Updated dependency prettier to ^3.3.0.

  • #178 ba4d277 Thanks @renovate! - Updated dependency @swc/core to ^1.7.4.

0.6.0

Minor Changes

0.5.2

Patch Changes

  • #149 c6a6d95 Thanks @renovate! - Updated dependency @swc/jest to ^0.2.34. Updated dependency @types/jest to ^29.5.12.

  • #137 6755150 Thanks @renovate! - Updated dependency @swc/core to ^1.3.100. Updated dependency @types/jest to ^29.5.10.

  • #122 19e9b71 Thanks @renovate! - Updated dependency eslint to ^8.48.0. Updated dependency prettier to ^3.0.3.

  • #154 ae2c239 Thanks @renovate! - Updated dependency eslint to ^8.57.0. Updated dependency prettier to ^3.2.5.

  • #117 3b6a9b9 Thanks @renovate! - Updated dependency @swc/core to ^1.3.81. Updated dependency @swc/jest to ^0.2.29. Updated dependency @types/jest to ^29.5.4. Updated dependency jest to ^29.6.4.

  • #150 107ba3b Thanks @renovate! - Updated dependency prettier to ^3.2.4.

  • #116 af0e683 Thanks @renovate! - Updated dependency packageManager to `pnpm@8.7.1. Updated dependency@rollup/plugin-commonjsto^25.0.4. Updated dependency@rollup/plugin-node-resolveto^15.2.1. Updated dependency@rollup/plugin-typescriptto^11.1.3. Updated dependency@types/nodeto^18.17.12. Updated dependencyrollupto^3.28.1. Updated dependencytslibto^2.6.2. Updated dependencytypescriptto^5.2.2`.

  • #144 e0e0c35 Thanks @renovate! - Updated dependency eslint to ^8.56.0. Updated dependency prettier to ^3.1.1.

  • #125 38a3d42 Thanks @renovate! - Updated dependency @swc/core to ^1.3.90. Updated dependency @types/jest to ^29.5.5. Updated dependency jest to ^29.7.0.

  • #120 6253f0a Thanks @renovate! - Updated dependency tsx to ^3.12.8.

  • #142 79715f9 Thanks @renovate! - Updated dependency tsx to ^4.7.0.

  • #131 c9875d3 Thanks @renovate! - Updated dependency eslint to ^8.52.0.

  • #148 2fc975b Thanks @renovate! - Updated dependency @types/node to ^20.11.16.

  • #139 2ef45a3 Thanks @renovate! - Updated dependency eslint to ^8.54.0. Updated dependency prettier to ^3.1.0.

  • #124 0a21ecd Thanks @renovate! - Updated dependency packageManager to `pnpm@8.8.0. Updated dependency@rollup/plugin-typescriptto^11.1.4. Updated dependency@types/nodeto^18.18.1. Updated dependency@types/ramdato^0.29.5. Updated dependencyrimrafto^5.0.5. Updated dependencyrollupto^3.29.4. Updated dependencytsxto^3.13.0`.

  • #146 bdd62f1 Thanks @renovate! - Updated dependency packageManager to `pnpm@8.15.1. Updated dependency@types/nodeto^20.11.13`.

  • #134 477df8d Thanks @renovate! - Updated dependency @types/node to ^20.10.1.

  • #129 198666a Thanks @renovate! - Updated dependency packageManager to `pnpm@8.10.0. Updated dependencyramdato^0.29.1. Updated dependency@rollup/plugin-commonjsto^25.0.7. Updated dependency@rollup/plugin-node-resolveto^15.2.3. Updated dependency@rollup/plugin-terserto^0.4.4. Updated dependency@rollup/plugin-typescriptto^11.1.5. Updated dependency@types/nodeto^18.18.8. Updated dependency@types/ramdato^0.29.7. Updated dependencyrollup-plugin-dtsto^6.1.0. Updated dependencytsxto^3.14.0`.

  • #152 0bb0930 Thanks @renovate! - Updated dependency packageManager to `pnpm@8.15.4. Updated dependency@types/nodeto^20.11.24. Updated dependencymatch-sorterto^6.3.4. Updated dependencytsxto^4.7.1`.

  • #123 30e046c Thanks @renovate! - Updated dependency rollup-plugin-dts to ^6.0.2.

  • #135 c46e5ce Thanks @renovate! - Updated dependency fuse.js to ^7.0.0.

  • #147 504a97c Thanks @renovate! - Updated dependency @swc/core to ^1.3.107. Updated dependency @swc/jest to ^0.2.31.

  • #126 9c78019 Thanks @renovate! - Updated dependency eslint to ^8.50.0.

  • #141 8834b25 Thanks @renovate! - Updated dependency eslint to ^8.55.0.

  • #119 092b5dc Thanks @renovate! - Updated dependency @swc/core to ^1.3.82.

  • #153 a9fa40e Thanks @renovate! - Updated dependency @swc/core to ^1.4.2. Updated dependency @swc/jest to ^0.2.36.

  • #128 d3b50f7 Thanks @renovate! - Updated dependency @swc/core to ^1.3.91.

  • #138 0acd50c Thanks @renovate! - Updated dependency packageManager to `pnpm@8.14.1. Updated dependency@changesets/changelog-githubto^0.5.0. Updated dependency@changesets/clito^2.27.1. Updated dependency@rollup/plugin-typescriptto^11.1.6. Updated dependency@types/nodeto^20.11.5. Updated dependency@types/ramdato^0.29.10. Updated dependencymatch-sorterto^6.3.3. Updated dependencytypescriptto^5.3.3`.

  • #155 7926689 Thanks @renovate! - Updated dependency @swc/core to ^1.4.11.

  • #143 61e7760 Thanks @renovate! - Updated dependency @swc/core to ^1.3.102. Updated dependency @types/jest to ^29.5.11.

  • #121 5fb3a7a Thanks @renovate! - Updated dependency @types/node to ^18.17.13.

  • #130 aed0f30 Thanks @renovate! - Updated dependency @swc/core to ^1.3.95. Updated dependency @types/jest to ^29.5.7.

  • #156 95ee963 Thanks @renovate! - Updated dependency packageManager to `pnpm@8.15.5. Updated dependency@types/nodeto^20.12.2. Updated dependency@types/ramdato^0.29.12. Updated dependencytypescriptto^5.4.3`.

0.5.1

Patch Changes

0.5.0

Minor Changes

Patch Changes

  • #111 2080b04 Thanks @thundermiracle! - fix: eslint

  • #106 f438a82 Thanks @renovate! - Updated dependency eslint to ^8.46.0.

  • #107 fefa569 Thanks @renovate! - Updated dependency prettier to ^3.0.0.

  • #104 b1d7b2c Thanks @renovate! - Updated dependency @swc/core to ^1.3.72. Updated dependency @swc/jest to ^0.2.27. Updated dependency @types/jest to ^29.5.3. Updated dependency jest to ^29.6.2.

  • #103 6dacb42 Thanks @renovate! - Updated dependency packageManager to `pnpm@8.6.11. Updated dependency@rollup/plugin-commonjsto^25.0.3. Updated dependency@types/nodeto^18.17.1. Updated dependencyrollupto^3.27.0. Updated dependencyrollup-plugin-dtsto^5.3.1. Updated dependencytslibto^2.6.1`.

  • #108 0d01fbb Thanks @renovate! - Updated dependency @swc/core to ^1.3.73.

  • #112 85229be Thanks @thundermiracle! - fix: type of SearchConditionMultiple

0.4.1

Patch Changes

  • #102 e4b72c3 Thanks @thundermiracle! - fix: pkg publish for browser

  • #100 dd1b45b Thanks @renovate! - Updated dependency @types/node to ^18.16.19.

  • #101 a9a5f1d Thanks @renovate! - Updated dependency eslint to ^8.44.0.

  • #98 f217bcd Thanks @renovate! - Updated dependency @swc/core to ^1.3.67. Updated dependency @swc/jest to ^0.2.26. Updated dependency @types/jest to ^29.5.2. Updated dependency jest to ^29.5.0.

  • #97 2a2ed94 Thanks @renovate! - Updated dependency packageManager to `pnpm@8.6.5. Updated dependency@changesets/clito^2.26.2. Updated dependency@rollup/plugin-commonjsto^25.0.2. Updated dependency@rollup/plugin-typescriptto^11.1.2. Updated dependency@types/nodeto^18.16.18. Updated dependency@types/ramdato^0.29.3. Updated dependencyrollupto^3.26.0. Updated dependencytslibto^2.6.0. Updated dependencytypescriptto^5.1.6`.

0.4.0

Minor Changes

0.3.1

Patch Changes

0.3.0

Minor Changes

Patch Changes

  • #83 8520115 Thanks @thundermiracle! - fix: error when running changeset version command

  • #90 203f006 Thanks @thundermiracle! - fix changeset generation bug

  • #91 598f2bf Thanks @renovate! - Updated dependency ramda to 0.29.0. Updated dependency @rollup/plugin-node-resolve to ^15.1.0. Updated dependency @types/node to ^18.16.17. Updated dependency @types/ramda to ^0.29.2. Updated dependency @web-configs/eslint-plugin to ^0.5.1. Updated dependency rimraf to ^5.0.1. Updated dependency tslib to ^2.5.3. Updated dependency tsx to ^3.12.7. Updated dependency typescript to ^5.1.3.

  • #92 9df64cf Thanks @renovate! - Updated dependency @rollup/plugin-commonjs to ^25.0.1.

  • #85 0f50bd4 Thanks @thundermiracle! - fix: release pr created by changeset not triggering github action workflow bug

  • #75 d61d622 Thanks @renovate! - chore(deps): update pnpm to v8

  • #81 6e41687 Thanks @thundermiracle! - chore: enable changesets

  • #87 5006af4 Thanks @thundermiracle! - feat: automatically add changeset to renovate prs

  • #82 127865e Thanks @thundermiracle! - chore: auto release by changeset

  • #88 b945436 Thanks @thundermiracle! - chore: try to trigger workflow after release pr is updated