使用Javascript进行分组
我有这个示例数据,并设法使用.filter、.map和.reduce链来获得一个学生的课程总分。我的问题是如何显示每个学生姓名的课程总分?如果我删除过滤器,它将显示所有学生的总分,而不是每个学生的总分使用Javascript进行分组,javascript,Javascript,我有这个示例数据,并设法使用.filter、.map和.reduce链来获得一个学生的课程总分。我的问题是如何显示每个学生姓名的课程总分?如果我删除过滤器,它将显示所有学生的总分,而不是每个学生的总分 var数据=[ {名称:“John”,courseName:“Javascript”,courseScore:85}, {姓名:“约翰”,courseName:“C#”,courseScore:72}, {名称:“John”,courseName:“SQL”,courseScore:91}, {
var数据=[
{名称:“John”,courseName:“Javascript”,courseScore:85},
{姓名:“约翰”,courseName:“C#”,courseScore:72},
{名称:“John”,courseName:“SQL”,courseScore:91},
{name:“Mike”,courseName:“Javascript”,courseScore:68},
{姓名:“迈克”,courseName:“C#”,courseScore:80},
{名称:“Mike”,courseName:“SQL”,courseScore:79}
];
//约翰所有课程的总分。
var scoreOfJohn=数据
.filter(x=>x.name=='John')
.map(x=>x.courseScore)
.减少((x,y)=>x+y);
console.log(scoreOfJohn)代码>作为一条直线,分组到一个映射
const group=data.reduce((a,b)=>a.set(b.name,(a.get(b.name)| | 0)+b.courseScore),新地图);
控制台日志(分组)代码>
风险值数据=[
{名称:“John”,courseName:“Javascript”,courseScore:85},
{姓名:“约翰”,courseName:“C#”,courseScore:72},
{名称:“John”,courseName:“SQL”,courseScore:91},
{name:“Mike”,courseName:“Javascript”,courseScore:68},
{姓名:“迈克”,courseName:“C#”,courseScore:80},
{名称:“Mike”,courseName:“SQL”,courseScore:79}
];
请参阅以获取开始。如果使用对象,它只能获取计数,对吗?我需要的是总数而不是计数。谢谢。它可以工作。输出只是空阵列打开您的控制台,使用一个没有过时的浏览器@brkit works,但无法真正理解“(a.get(b.name)| | 0)+”