gpt4 book ai didi

javascript - 最有效地检查循环匹配

转载 作者:行者123 更新时间:2023-12-01 06:32:26 24 4
gpt4 key购买 nike

我有一个简单的设置来查找最高分。目标是对得分最高的人进行排序,然后给予前 3 名奖励积分。

问题:在下面的第二部分中,我将循环查看人员并检查谁获得了最高分。问题是我需要为每个名字执行 3 次。我目前设置循环的方式有效,但似乎非常多余。这是正确的方法吗?

   var allGrades = [
{name: 'andrew', score: 80},
{name: 'john', score: 90},
{name: 'sam', score: 31},
{name: 'frank', score: 50},
{name: 'dave', score: 95},
]

allGrades.sort(function(obj1, obj2) {
return obj2.score - obj1.score;
});

第二部分。给予得分前3名的人相应奖励50/25/15。

for (i = 1; i < 5; i++) {

if (allGrades[0].name == 'andrew'){
andrewGradeBonus = 50;
if (allGrades[1].name == 'andrew'){
andrewGradeBonus = 25;
if (allGrades[2].name == 'andrew'){
andrewGradeBonus = 15;

if (allGrades[0].name == 'dave'){
daveGradeBonus = 50;
if (allGrades[1].name == 'dave'){
daveGradeBonus = 25;
if (allGrades[2].name == 'dave'){
daveGradeBonus = 15;

继续所有名称...

最佳答案

您可以迭代成绩并增加实际分数:

const gradeBonuses = [50, 25, 15];
allGrades.sort((a, b) => b.score - a.score).forEach((grade, index) => {
if (index < 3) {
grade.score += gradeBonuses[index];
}
});

如果您确实想要单独的奖励 Prop ,只需将 grade.score +=gradeBonuses[index]; 切换为

const bonusProp = `${grade.name.toLowerCase()}GradeBonus`
grade[bonusProp] = gradeBonuses[index];

但是既然对象已经存储了名称,为什么还需要将该名称添加到奖励属性的名称中呢?

关于javascript - 最有效地检查循环匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57260391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com