【发布时间】:2019-04-23 12:54:06
【问题描述】:
我想比较我保存在数组中的对象的值。
我知道我可以使用来自每个对象的值创建新数组,但我正在尝试找到一些方法来做到这一点而不创建它们。
考虑我们有这样的情况:
soldiers[first, second, third]
first{name: John, shooting: 95, combat: 50, tactic: 88}
second{name: Arnold, shooting: 97, combat: 72, tactic: 68}
third{name: William, shooting: 87, combat: 86, tactic: 97}
我想从上面提供的士兵中选出最好的士兵 - 但我无法创建一个评分(即平均)。
会有一些士兵必须满足的条件——例如:战斗中至少有 60 点(不管其他属性是否为 100)。
所以我试图找到方法来比较多个属性并只返回一名士兵的姓名。
我会感激每一个提示。谢谢!
【问题讨论】:
-
您需要隔离问题并从那里进行调试。如果您遇到困难,请清楚说明 Minimal, Complete, and Verifiable example 的不适用之处。我建议阅读How to Ask a good question。另外,请务必take the tour
-
soldiers.find(s => s.combat > 60 && s.shooting > 90) -
非常感谢!使用您的答案,我发现我可以使用 .map() 和 .filter() 方法,但我只需要使用正确的命名。
-
@PiotrKaczmarek :假设您提到在计算最佳表现者时并非所有技能都同等重要,总分或平均分不能满足该要求。加权总数将更适合目的。因此,如果您仍然对这种方法感兴趣,可以在下面查看我的答案。
标签: javascript arrays object comparison