我有一个JSON数据集,如下所示:
{
name: "Evelyn",
assignment: "SCRUM",
difficulty: 3,
fun: 4
}等。
我试图计算每个作业的难度和乐趣值的平均值。因为我有10组/个人有56份作业,所以我的想法是先过滤这些作业,它应该产生56组作业,每一次的乐趣和难度都有10个值,然后计算每个作业的平均值。
我很难将这个计划付诸实施,因为我不知道如何体面地使这个新的JSON数据集/数组。我正在考虑地图,减少等,但只是挣扎着把它付诸行动。有什么简单的方法吗?
发布于 2022-08-19 12:48:17
您可以使用Array.reduce()按赋值对数据进行分组。
一旦我们对数据进行分组,我们就可以得到difficulty和fun的平均值。
let data = [{ name: "Evelyn", assignment: "SCRUM", difficulty: 3, fun: 4 }, { name: "Bill", assignment: "SCRUM", difficulty: 1, fun: 3 }, { name: "Carol", assignment: "SCRUM", difficulty: 2, fun: 5 }, { name: "Evelyn", assignment: "PLANNING", difficulty: 5, fun: 3 }, { name: "Bill", assignment: "PLANNING", difficulty: 6, fun: 1 }, { name: "Carol", assignment: "PLANNING", difficulty: 1, fun: 2 } ]
const groupedData = Object.values(data.reduce((acc, { name, assignment, difficulty, fun }) => {
acc[assignment] = acc[assignment] || { assignment, difficulty: 0, fun: 0, participants: 0 };
acc[assignment].difficulty += difficulty;
acc[assignment].fun += fun;
acc[assignment].participants++;
return acc;
}, {}))
const result = groupedData.map(({ assignment, participants, difficulty, fun }) => {
return {
assignment,
participants,
averageDifficulty: difficulty / participants,
averageFun: fun / participants
}
});
console.log(result).as-console-wrapper { max-height: 100% !important; }
https://stackoverflow.com/questions/73416789
复制相似问题