movies = [
{
id:1,
title: "movie1",
genre:["action","sci-fi"],
country:["usa","uk"]
},
{
id:2,
title: "movie2",
genre:["action","comedy"],
country:["usa","ireland"]
},
{
id:3,
title: "movie3",
genre:["comedy","romance"],
country:["ireland","uk]
},
]
I want to filter movies by genre and country. I can do that in a very weird method. But I wonder what's the shortcut of filtering. Is there any option that I can filter if the prop or props exist, if not leave the original?
const Component = ({ genre, country }) => {
const [movies,setMovies]=useState([]);
const [filteredMovies,setFilteredMovies]=useState([])
useEffect(()=>{
//fetch from api and set movies
},[])
useEffect(()=>{
setFilteredMovies(
movies.filter((item) =>
{
if(genre || country){
if(!country){
return item.genre.includes(genre)
}elseif(!genre){
return item.country.includes(country)
}else{
return item.genre.includes(genre) && item.country.includes(country)
}
}else return item
}
)
);
},[movies,genre,country])
return (
<div>
{filteredMovies.map((item) => (
<Movie item={item} key={item.id} />
))}
</div>
);
}