https://github.com/bimus-github/search-in-js
https://github.com/bimus-github/search-in-js
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bimus-github/search-in-js
- Owner: bimus-github
- Created: 2024-03-18T14:31:23.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-02T04:51:15.000Z (over 1 year ago)
- Last Synced: 2025-10-02T04:21:01.855Z (6 months ago)
- Language: TypeScript
- Size: 43.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Array Data Filter Function
This is a custom function designed to filter data in an array based on a search query.
It provides flexibility in specifying the keys to search for within the data,
as well as the type of search function to use.
## Usage
### Installation
```bash
npm install search-in-js
```
```bash
yarn add search-in-js
```
### Example
```javascript
import { useState, useEffect } from "react";
import search from "search-in-js";
const ExampleComponent = () => {
const data = [
{ id: 1, name: "test1", comment: { id: 1, text: "some comment" } },
{ id: 2, name: "test2", comment: { id: 2, text: "some other comment" } },
// More data...
];
// Define keys for searching
const keys = ["id", "comment.text"];
// State for search query and filtered data
const [value, setValue] = useState("");
const [filteredData, setFilteredData] = useState(data);
// Update filtered data when search query changes
useEffect(() => {
setFilteredData(search(value, data, keys, "fuzzy"));
}, [value]);
return (
setValue(e.target.value)}
/>
{filteredData.map((item) => (
- {item.name}
))}
);
};
```
### API
#### `search(value, data, keys, functionType)`
- `value` (`string`): The value to search for in the data.
- `data` (`Array`): The array of data to search.
- `keys` (`Array`): The array of keys to search for in the data.
if you want to search by id and name, you can use the following keys:
const keys = ["id", "name"];
if you want to search by comments.id and comments.text, you can use the following keys:
const keys = ["comments.id", "comments.text"];
- `functionType` (`SEARCH_FUNCTION`, optional): The type of search function to use. Defaults to "fuzzy".
Available search function types:
equal, fuzzy, contains, starts-with, ends-with, starts-with-no-space, greater, less, greater-equal, less-equal
Returns: `Array` - The filtered data based on the search query.
## Contributing
Contributions are welcome! Please feel free to open a pull request.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
```
Feel free to modify and expand upon it to suit your needs!
```