【问题标题】:Compare array property values from different objects比较来自不同对象的数组属性值
【发布时间】:2011-11-21 06:14:26
【问题描述】:

我有一个名为“Player”的对象,它具有“score”、“turns”、“name”等属性。根据用户选择的玩家数量,我创建了一个玩家数组。

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

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

【问题讨论】:

  • gjunkie,你能发布你的代码吗?这将有助于其他人回答。
  • var 获胜者 = function(thisPlayer){ var playerScores=[]; for(i=0;i

标签: javascript arrays object


【解决方案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);
}

【讨论】:

  • 嗨 jfriend00,这看起来可能有效!当你看到它被写下来时非常简单。当然,现在我在更新每个玩家的得分值时遇到了问题,所以我无法完全测试它......
  • 我回去找出了我的其他错误。这个解决方案就像一个魅力。谢谢!
【解决方案2】:

为什么您不能遍历玩家数组并简单地检查每个玩家与当前玩家的得分?

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

这有帮助吗?

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

【讨论】:

  • 您好 Eric,我的问题是我有一个 Winner() 函数,该函数运行以检查是否有获胜者。这个函数在每个玩家的回合结束时运行,我将运行它的玩家传递给它:Winner(player2)。所以我可以看到 player2 的分数,但我需要看看它是否高于其他玩家,无论有多少玩家。
  • 所以循环遍历所有玩家并检查传入玩家的分数是否高于其他所有玩家。一旦你找到一个更高的,你可以停下来。
  • 对,我想这正是我想要做的,但我不知道怎么做。你有例子吗?
猜你喜欢
  • 1970-01-01
  • 2014-06-02
  • 2022-10-16
  • 2019-06-28
  • 1970-01-01
  • 2020-07-13
  • 2020-01-10
  • 1970-01-01
  • 2017-08-06
相关资源
最近更新 更多