javascript - 如何根据平均评分填写评论图标?
问题描述
我已经建立了 NodeJS 和 React 项目。在项目中,每个用户都有自己的列表,每个列表都有自己的评论。现在我得到评论数,然后计算平均评论。现在我想将图标填充到我收到的任何平均数字。因此,例如,如果平均评论为 3,则将填充 3 星,而不会填充 2 星。我将星形图标作为一个组件,我唯一要做的就是isFilled={true}
填充一个图标。
我如何获得平均评分:
// Get average number of all ratings
const arrAvg = arr => arr.reduce((a, b) => a + b, 0) / arr.length;
const getAvgRating =
reviews.length > 0 ? arrAvg(reviews.map(review => review.attributes.rating)) : 0;
const avgRating = parseInt(getAvgRating); // This is my average review number
这是我的评论星形图标(我想根据平均评分的数量填充每个星形):
<IconReviewStar isFilled={true} /> // isFilled will mark icon as filled
<IconReviewStar isFilled={true} />
<IconReviewStar isFilled={true} />
<IconReviewStar />
<IconReviewStar />
有什么简单的解决方法吗?所以我可以省去编写不必要的代码。任何帮助都将意味着,即使它只是一篇可以为我指出正确答案的文章。
最好的,阿莱克萨
解决方案
尝试迭代并有条件地将道具渲染到您的avgRating
.
const totalFilled = Math.ceil(avgRating);
const totalStars = 5;
const ReviewBar = () =>
[...Array(totalStars).keys()].map((key) => (
<IconReviewStar key={key} isFilled={key < totalFilled} />
));
推荐阅读
- sql - 如何在一个表中查找所有结果,最大
- excel - Visual Basic For Applications:通过文本框编辑表格的问题
- java - 将 EditText 中的文本保存到文件时出现问题
- javascript - 如何按键合并两个对象中的数组(Javascript)
- c++ - '未完成的读取操作必须挂起'是什么意思
- javascript - 我想使用一个按钮将 iframe 滚动到底部,但答案中给出的代码似乎不适用于该
- mysql - 在 django 的 mysql 中获得不同的“标题”
- wordpress - 在 Woocommerce 中成功下单后获取 Stripe customer_id
- html - 写 id 而不是 name
- junit - 如何使用 ant junit 目标从 xml 传递文件?