首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算JSON值的平均值并使用Javascript迭代这x次呢?

如何计算JSON值的平均值并使用Javascript迭代这x次呢?
EN

Stack Overflow用户
提问于 2022-08-19 12:25:55
回答 1查看 31关注 0票数 1

我有一个JSON数据集,如下所示:

代码语言:javascript
复制
 {
   name: "Evelyn",
   assignment: "SCRUM",
   difficulty: 3,
   fun: 4
 }

等。

我试图计算每个作业的难度和乐趣值的平均值。因为我有10组/个人有56份作业,所以我的想法是先过滤这些作业,它应该产生56组作业,每一次的乐趣和难度都有10个值,然后计算每个作业的平均值。

我很难将这个计划付诸实施,因为我不知道如何体面地使这个新的JSON数据集/数组。我正在考虑地图,减少等,但只是挣扎着把它付诸行动。有什么简单的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-19 12:48:17

您可以使用Array.reduce()按赋值对数据进行分组。

一旦我们对数据进行分组,我们就可以得到difficultyfun的平均值。

代码语言:javascript
复制
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)
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73416789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档