typescript 如何通过一个方法迭代用户列表?数据库中的每个用户都有专门分配给他的问题

5us2dqdw  于 2023-02-05  发布在  TypeScript
关注(0)|答案(1)|浏览(101)

如何通过一个方法迭代用户列表?数据库中的每个用户都有专门分配给他的问题。
有一个方法scorePerUser(userId)返回一个关系(correct_answered_questions / all_questions).这个方法返回正确答案占问题总数的百分比。

const users = [
{"name": "A", "userId": "1", "questions": [{"correct": true}, {"correct": true}, {"correct": true}]},
{"name": "B", "userId": "2", "questions": [{"correct": false}, {"correct": false}, {"correct": false}]},
{"name": "C", "userId": "3", "questions": [{"correct": true}, {"correct": true}, {"correct": false}]},
]

**例如:**用户[0]有100%的正确答案,用户[1]有~ 33%,用户[2]有~ 66%。

现在,我只能统计一个用户:scorePerUser(userId).但是我可以使用该方法来计算所有用户正确答案的百分比吗?
我应该这样做吗:

users.forEach(){
   function scorePerUser(???)
};

或者我应该创建一个新方法?

egmofgnx

egmofgnx1#

我想你可以使用forEach。我用它与Map。一个注意userid2有0正确的,这将不是33%。我想你的意思是他们只有一个正确的。

const scoreQuestions = obj => {
    const questions = obj["questions"];
    let score = 0;
    let total = questions.length;
    
    for(let i=0; i<questions.length; i++) {
        if(questions[i]["correct"] === true) {
            score++;
        }
    }
    
    return score/total;
}

const userScores = users.map(obj => scoreQuestions(obj))

相关问题