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

时间:2011-11-21 06:14:26

标签: javascript arrays object

我有一个名为“玩家”的对象,其中包含“得分”,“转弯”,“名字”等属性。根据用户选择的玩家数量,我创建了一系列玩家。

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

我目前正在做出最好的选择吗?必须有一种方法来优化这一点。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您可以通过数组查看最高分,然后查看是否是您的播放器。

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);
}

答案 1 :(得分:0)

为什么你不能迭代玩家阵列并简单地检查每个玩家与当前玩家的得分?

您可以保留一系列按其分数排序的玩家,而不是保留一个分数数组吗?

这有帮助吗?

http://www.javascriptkit.com/javatutors/arraysort2.shtml