匹配对象然后计算学生成绩的成绩

match objects then calculate grade for student grade

我遇到了一个问题。

所以我正在制作这个学生评分系统。它的工作方式是系统应该能够将答案键与学生的答案相匹配。答案键是这样存储的:

 const answerkeys = {math01: a, math02: b, math03 : d, ...}

还有一个评分系统,math01值5分,math02值10分,等等。出于困惑,我将数据保存在另一组数据集合中,如下所示:

const scoring = {math01: 5, math02: 10, math03: 5, ...}

然后学生的答案是这样存储的:

const answers = {0: {math01: a, math02: c, ... }
           1: {math01: b, math02: a, ... }
           2: {math01: a, math02: c, ... }
           ...
           }

起初,逻辑上我认为我可以迭代答案,然后单个结果将与 answerkeys 匹配,然后返回的(匹配项)将与 answerkeyandscore 相乘。

所以我尝试这样做:

const studentAnswers = answers.map((elem) => {return elem});

studentAnswer.filter(answer => answerkeys.includes(answer));

但它给了我

"result.js:82 Uncaught TypeError: Cannot read properties of undefined (reading 'filter')"

如何比较“answerkeys”和“answers”,然后使用“scoring”计算分数?

Object 对象没有原生的 map,但我建议这样做:

let allStudentsScores = {}

for (var idx in answers) {
    let studentAnswer = answers[idx]
    let studentScore = 0
    for(var key in studentAnswer) {
        if (studentAnswer[key]==answerkeys[key]) {
            studentScore += scoring[key]
        }

    }
    allStudentsScores[idx] = studentScore
}

allStudentsScores 变量包含每个学生的分数。其中 idx <0, 1, 2, ...> 代表每个学生。

希望能回答您的问题。