Search filter for multiple object in ReactJS
Today we will show you how to implement search filter for multiple object in ReactJS with example.
How to create Search filter for multiple object in ReactJS, Creating a Multi-Filter Function to Filter Out Multiple Attributes, Filter Results with React, react multiple filters, filter multiple values in reactjs, react search filter json, react search filter codepen, react filter on click, react filter multiple conditions, react filter array multiple values.
Checkout more articles on ReactJS
- Ternary Operator in ReactJS
- Element Variables in ReactJS
- Image zoom in ReactJS
- Form Validation in ReactJS
- API call in React JS
While you are working with grid or list view at that time you may need to implement the filter functionality on an array of the object.
https://youtu.be/_HFf3tIFNfQ
Way to implement search filter for multiple object
1. Create react application
Letās start with creating the simple react application with the help of the `create-react-app`. If you donāt know about how to create a react application then refer the below link.
2. Example to render an array
Now we will create a simple example where we use dummy array and render on screen. Checkout the example below.
4. Implement search filter
To implement search filter, we will create one function where we pass the search text and based on it we will filter the records and set it back to the state variable.
We have also used the list of columns to be consider as a exclueded columns `excludeColumns` that we can ignore it from the filter.
// exclude column list from filter
const excludeColumns = ["id", "color"];
// filter records by search text
const filterData = (value) => {
const lowercasedValue = value.toLowerCase().trim();
if (lowercasedValue === "") setData(dataList);
else {
const filteredData = dataList.filter(item => {
return Object.keys(item).some(key =>
excludeColumns.includes(key) ? false : item[key].toString().toLowerCase().includes(lowercasedValue)
);
});
setData(filteredData);
}
}
In the above function, first we checked the lower cased value, If itās empty then we set the whole data into the state variable. If search value exists then check the value with each item of an array and return true if exist.
Letās combine all the code together in `App.js` file.
App.js
import React, { useState } from 'react';
function App() {
const dataList = [
{
"id": 1,
"name": "cerulean",
"year": 2000,
"color": "#98B2D1",
"pantone_value": "15-4020"
},
{
"id": 2,
"name": "fuchsia rose",
"year": 2001,
"color": "#C74375",
"pantone_value": "17-2031"
},
{
"id": 3,
"name": "true red",
"year": 2002,
"color": "#BF1932",
"pantone_value": "19-1664"
},
{
"id": 4,
"name": "aqua sky",
"year": 2003,
"color": "#7BC4C4",
"pantone_value": "14-4811"
},
{
"id": 5,
"name": "tigerlily",
"year": 2004,
"color": "#E2583E",
"pantone_value": "17-1456"
},
{
"id": 6,
"name": "blue turquoise",
"year": 2005,
"color": "#53B0AE",
"pantone_value": "15-5217"
},
{
"id": 7,
"name": "sand dollar",
"year": 2006,
"color": "#DECDBE",
"pantone_value": "13-1106"
},
{
"id": 8,
"name": "chili pepper",
"year": 2007,
"color": "#9B1B30",
"pantone_value": "19-1557"
},
{
"id": 9,
"name": "blue iris",
"year": 2008,
"color": "#5A5B9F",
"pantone_value": "18-3943"
},
{
"id": 10,
"name": "mimosa",
"year": 2009,
"color": "#F0C05A",
"pantone_value": "14-0848"
},
{
"id": 11,
"name": "turquoise",
"year": 2010,
"color": "#45B5AA",
"pantone_value": "15-5519"
},
{
"id": 12,
"name": "honeysuckle",
"year": 2011,
"color": "#D94F70",
"pantone_value": "18-2120"
},
{
"id": 13,
"name": "cerulean",
"year": 2000,
"color": "#98B2D1",
"pantone_value": "15-4020"
},
{
"id": 14,
"name": "fuchsia rose",
"year": 2001,
"color": "#C74375",
"pantone_value": "17-2031"
},
{
"id": 15,
"name": "true red",
"year": 2002,
"color": "#BF1932",
"pantone_value": "19-1664"
},
{
"id": 16,
"name": "aqua sky",
"year": 2003,
"color": "#7BC4C4",
"pantone_value": "14-4811"
},
{
"id": 17,
"name": "tigerlily",
"year": 2004,
"color": "#E2583E",
"pantone_value": "17-1456"
},
{
"id": 18,
"name": "blue turquoise",
"year": 2005,
"color": "#53B0AE",
"pantone_value": "15-5217"
},
{
"id": 19,
"name": "sand dollar",
"year": 2006,
"color": "#DECDBE",
"pantone_value": "13-1106"
},
{
"id": 20,
"name": "chili pepper",
"year": 2007,
"color": "#9B1B30",
"pantone_value": "19-1557"
},
{
"id": 21,
"name": "blue iris",
"year": 2008,
"color": "#5A5B9F",
"pantone_value": "18-3943"
},
{
"id": 22,
"name": "mimosa",
"year": 2009,
"color": "#F0C05A",
"pantone_value": "14-0848"
},
{
"id": 23,
"name": "turquoise",
"year": 2010,
"color": "#45B5AA",
"pantone_value": "15-5519"
},
{
"id": 24,
"name": "honeysuckle",
"year": 2011,
"color": "#D94F70",
"pantone_value": "18-2120"
}
];
const [searchText, setSearchText] = useState("");
const [data, setData] = useState(dataList);
// exclude column list from filter
const excludeColumns = ["id", "color"];
// handle change event of search input
const handleChange = value => {
setSearchText(value);
filterData(value);
};
// filter records by search text
const filterData = (value) => {
const lowercasedValue = value.toLowerCase().trim();
if (lowercasedValue === "") setData(dataList);
else {
const filteredData = dataList.filter(item => {
return Object.keys(item).some(key =>
excludeColumns.includes(key) ? false : item[key].toString().toLowerCase().includes(lowercasedValue)
);
});
setData(filteredData);
}
}
return (
<div className="App">
<a href="https://www.cluemediator.com">Clue Mediator</a><br /><br />
Search: <input
style={{ marginLeft: 5 }}
type="text"
placeholder="Type to search..."
value={searchText}
onChange={e => handleChange(e.target.value)}
/>
<div className="box-container">
{data.map((d, i) => {
return <div key={i} className="box" style={{ backgroundColor: d.color }}>
<b>Name: </b>{d.name}<br />
<b>Year: </b>{d.year}<br />
<b>Color: </b>{d.color}<br />
<b>Pantone value: </b>{d.pantone_value}
</div>
})}
<div className="clearboth"></div>
{data.length === 0 && <span>No records found to display!</span>}
</div>
</div>
);
}
export default App;
4. Output
Output - Search filter for multiple object in ReactJS - Clue Mediator
Thatās it for today.
Thank you for ready. Happy Coding!