我正在计算代表的成绩。如果他们的选票能保护海洋,那么他们的成绩就好;如果他们的选票没有保护,他们的情况就不好。我的算法运行良好。代表海洋的每票可得3分,反对海洋的票可得0分,弃权可得1分,缺席可得0.5分。然后,只要我想以%的比例使用,就可以将分数设为20或100。
我现在要做的是为每个法律类别计算一个加权平均值。例如,如果某法律类别中有3票,我希望它们在最终等级中的权重与具有1票其他法律类别中的权重相同。
我不确定该怎么做。但基本上,对于每个法律类别,我都希望发生以下代码:
const GetGrade = (id, votes, number) => {
console.info("<<< GET GRADE id", id);
console.info("<<< GET GRADE votes", votes);
console.info("<<< GET GRADE number", number);
const scale = number || 100;
let points = 0;
let numberOfVotes = 0;
// for each votes.law.category I want the following to happen :
for (var i = 0; i < votes.length; i++) {
if (votes[i].deputy._id === id) {
if (
(votes[i].decision === "for" && votes[i].law.protect === true) ||
(votes[i].decision === "against" && votes[i].law.protect === false)
) {
points += 3;
numberOfVotes += 1;
}
if (
(votes[i].decision === "for" && votes[i].law.protect === false) ||
(votes[i].decision === "against" && votes[i].law.protect === true)
) {
points += 0;
numberOfVotes += 1;
}
if (votes[i].decision === "absence") {
points += 0.5;
numberOfVotes += 1;
}
if (votes[i].decision === "abstention") {
points += 1;
numberOfVotes += 1;
}
}
}
const finalNote = Number(((points / (numberOfVotes * 3)) * scale).toFixed(0));
return finalNote;
};
这是我用来计算等级的一系列投票的图像: