Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较不同对象的数组属性值_Javascript_Arrays_Object - Fatal编程技术网

Javascript 比较不同对象的数组属性值

Javascript 比较不同对象的数组属性值,javascript,arrays,object,Javascript,Arrays,Object,我有一个名为“玩家”的对象,它具有诸如“分数”、“回合数”、“名称”等属性。根据用户选择的玩家数量,我创建了一个玩家数组 随着游戏的进行,我会更新每个玩家的分数。我需要做的是将当前玩家的“分数”与所有其他玩家进行比较。如果更高,则表示玩家获胜。目前我唯一能做到这一点的方法是创建一个包含所有玩家分数值的临时数组,并将数组从最高到最低重新排序。然后我检查当前玩家的分数是否与我的临时数组的0索引中的分数相同。但这可能会导致潜在的问题,因为两个玩家可能拥有相同的分数,此时我无法将临时数组中的分数与它所属

我有一个名为“玩家”的对象,它具有诸如“分数”、“回合数”、“名称”等属性。根据用户选择的玩家数量,我创建了一个玩家数组

随着游戏的进行,我会更新每个玩家的分数。我需要做的是将当前玩家的“分数”与所有其他玩家进行比较。如果更高,则表示玩家获胜。目前我唯一能做到这一点的方法是创建一个包含所有玩家分数值的临时数组,并将数组从最高到最低重新排序。然后我检查当前玩家的分数是否与我的临时数组的0索引中的分数相同。但这可能会导致潜在的问题,因为两个玩家可能拥有相同的分数,此时我无法将临时数组中的分数与它所属的玩家关联

我现在做的是最好的选择吗?必须有一种方法来优化这一点。
谢谢你的帮助

为什么你不能遍历玩家数组,简单地检查每个玩家相对于当前玩家的分数

你能不能保留一个按分数排序的玩家数组,而不是保留一个分数数组

这有用吗


你只需在数组中查找最高分,然后看看那是否是你的玩家

var playerInfo = [
    {name: "Bob", score: 70},
    {name: "Jill", score: 98},
    {name: "Ted", score: 96}
];

function findHighestScore() {
    // assumes there is always at least one entry in the playerInfo array
    var highestIndex = 0;
    var highestScore = playerInfo[0].score;
    for (var i = 1; i < playerInfo.length; i++) {
        if (playerInfo[i].score > highestScore) {
            highestIndex = i;
            highestScore = playerInfo[i].score;
         }
     }
     return(highestIndex);
}
var playerInfo=[
{姓名:“鲍勃”,分数:70},
{姓名:“吉尔”,分数:98},
{姓名:“Ted”,分数:96}
];
函数findHighestScore(){
//假定playerInfo数组中始终至少有一个条目
var highestIndex=0;
var highestScore=playerInfo[0]。分数;
对于(变量i=1;i最高分数){
高指数=i;
highestScore=playerInfo[i]。分数;
}
}
返回(最高指数);
}

gjunkie,你能发布你的代码吗。这将有助于其他人回答。var winner=function(thisPlayer){var playerScores=[];对于(i=0;iHi Eric),我的问题是我有一个winner()函数,运行该函数检查是否有赢家。该函数在每个玩家回合结束时运行,我将它传递给运行它的玩家:winner(player2).所以我可以看到玩家2的分数,但我需要看看它是否高于其他玩家,不管有多少玩家。因此,循环所有玩家,检查通过的玩家的分数是否高于所有其他玩家。一旦你找到一个更高的,你可以停下来。对,我想这正是我想要做的,但我不知道怎么做。你有一个例子吗?嗨,jfriend00,这看起来可能有用!当你看到它被写下来时非常简单。当然现在我在更新每个玩家的分数值时遇到了问题,所以我无法完全测试它…我回去找出了我的其他错误。这个解决方案非常有效。谢谢!