【发布时间】:2022-10-25 02:10:40
【问题描述】:
我想迭代一系列不同的评级,按每个唯一的 id 排序,求和并计算每个 id 评级的平均值。然后将平均值保存在一个新数组中,我可以在其中调用类似 averageRating[i] 的东西,其中每个条目将是每个 id 的评分。
原始对象数组如下所示,其中 id 可以是任意数字。
data = [{id: 1, rating: 1}, {id: 1, rating: 3}, {id: 1, rating: 1}, {id: 1, rating: 4}, {id: 1, rating}, {id: 2, rating: 3}, {id: 3, rating: 5}, {id: 1, rating: 5}, {id: 1, rating: 5}, {id: 1, rating: 5, {id: 1, rating: 1}, {id: 2, rating: 4}, {id: 1, rating: 3}, {id: 1, rating: 2}]
我只用一个特定的 id 就可以完成这项工作,执行如下操作,但是在弄清楚如何处理动态数量的 id 时遇到了一些麻烦。
var [average, updateAverage] = useState(0);
let ratings = data.map((item) => item.rating);
// Calculate average of the array
let sum = ratings.reduce((a, b) => a + b, 0);
let avg = sum / ratings.length || 0;
let avgRounded = Math.round(avg); // Round to nearest whole number
updateAverage = avgRounded;
【问题讨论】:
-
在 map 函数中,您可以使用索引,也可以使用该索引。这就是所有数据将是唯一的
标签: javascript reactjs