NodeJS 我需要数学分数>50然后打印,否则给予消息[关闭]

kognpnkq  于 2023-01-08  发布在  Node.js
关注(0)|答案(2)|浏览(95)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3小时前关门了。
Improve this question
在这里,我无法隐藏较低的标记字段

let result = [];
var Avgmarks = 0,i;
let students = [{name: "Student1",sub: {math: 80,eng: 50,science: 70}},{name: "Student2",sub:{math: 40,eng: 65,science: 85}}];

students.forEach( student => {
  result.push({
    name: student.name,
    Subject: student.sub,
    marks: Object.values(student.sub).reduce((a, b) => a + b),
    
    Average:  ( Object.values(student.sub).reduce((a, b) => (a + b)) ) / ( Object.values(student.sub).length )
    
  })
});

console.log(result)

[{姓名:"学生1",主题:{数学:80,英语:50、理科:70},分数:200,平均值:120},{名称:"学生2",科目:{数学:40,英语:65、理科:85},标记:190,平均值:90个]

px9o7tmv

px9o7tmv1#

你用reduce计算平均值的方法是错误的
如果你知道总是会有三门课,你可以试试

{ Average: Object.values(student.sub).reduce((a, b) => (a + b))/3 }

如果对象长度可以变化

Average:  ( Object.values(student.sub).reduce((a, b) => (a + b)) ) / ( Object.values(student.sub).length )
rhfm7lfc

rhfm7lfc2#

可以使用student.sub中值的总和来计算平均值,而不是将总和除以300。例如:

const sum = Object.values(student.sub).reduce((a, b) => a + b);
const average = sum / Object.values(student.sub).length;

result.push({
  name: student.name,
  Subject: student.sub,
  marks: sum,
  Average: average
});

相关问题