So I have a rating system and I have made the following code for showing how many stars to show, although it is very long winded and so I am trying to work out a way to make it much shorter.
I dunno if there's some kind of algorithm to multiply and then add the empty star or something?
const rating = (recipe) => {
const value = (recipe.rating / recipe.votes.length).toFixed(1);
if (value >= 4.9)
return (
<>
<FaStar />
<FaStar />
<FaStar />
<FaStar />
<FaStar />
</>
);
if (value >= 4.5)
return (
<>
<FaStar />
<FaStar />
<FaStar />
<FaStar />
<FaStarHalfAlt />
</>
);
if (value >= 4)
return (
<>
<FaStar />
<FaStar />
<FaStar />
<FaStar />
<FaRegStar />
</>
);
if (value >= 3.5)
return (
<>
<FaStar />
<FaStar />
<FaStar />
<FaStarHalfAlt />
<FaRegStar />
</>
);
if (value >= 3)
return (
<>
<FaStar />
<FaStar />
<FaStar />
<FaRegStar />
<FaRegStar />
</>
);
if (value >= 2.5)
return (
<>
<FaStar />
<FaStar />
<FaStarHalfAlt />
<FaRegStar />
<FaRegStar />
</>
);
if (value >= 2)
return (
<>
<FaStar />
<FaStar />
<FaRegStar />
<FaRegStar />
<FaRegStar />
</>
);
if (value >= 1.5)
return (
<>
<FaStar />
<FaStarHalfAlt />
<FaRegStar />
<FaRegStar />
<FaRegStar />
</>
);
if (value >= 1)
return (
<>
<FaStar />
<FaRegStar />
<FaRegStar />
<FaRegStar />
<FaRegStar />
</>
);
if (value >= 0.5)
return (
<>
<FaStarHalfAlt />
<FaRegStar />
<FaRegStar />
<FaRegStar />
<FaRegStar />
</>
);
return (
<>
<FaRegStar />
<FaRegStar />
<FaRegStar />
<FaRegStar />
<FaRegStar />
</>
);
};