Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript进行分组_Javascript - Fatal编程技术网

使用Javascript进行分组

使用Javascript进行分组,javascript,Javascript,我有这个示例数据,并设法使用.filter、.map和.reduce链来获得一个学生的课程总分。我的问题是如何显示每个学生姓名的课程总分?如果我删除过滤器,它将显示所有学生的总分,而不是每个学生的总分 var数据=[ {名称:“John”,courseName:“Javascript”,courseScore:85}, {姓名:“约翰”,courseName:“C#”,courseScore:72}, {名称:“John”,courseName:“SQL”,courseScore:91}, {

我有这个示例数据,并设法使用.filter、.map和.reduce链来获得一个学生的课程总分。我的问题是如何显示每个学生姓名的课程总分?如果我删除过滤器,它将显示所有学生的总分,而不是每个学生的总分

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)+”