【发布时间】:2021-02-05 09:42:42
【问题描述】:
我有两个数组:
团队 A = [97, 112, 101]
团队 B = [109, 95, 123]
数组中的每个元素都是特定球队在一场比赛中的得分。我需要设置一个条件,仅将高于 100 的分数相加。因此,对于一个团队来说,条件是:如果团队得分高于 100,则该团队得分与另一个也高于 100 的团队得分相加,并且如果该得分的总和更高比另一队得分之和,该队获胜。
我坚信通过映射我可以得到高于 100 的分数,但我得到了一个新数组,其中第一个元素为 undefined。
我的代码示例:
const dolphinsGames = [97, 112, 101];
const koalasGames = [109, 95, 123];
const dolphinsScoreAbove = dolphinsGames.map((dolphinsGame) => {
if (dolphinsGame >= 100) {
return dolphinsGame;
}
});
const koalasScoreAbove = koalasGames.map((koalasGame) => {
if (koalasGame >= 100) {
return koalasGame;
}
});
【问题讨论】:
-
请添加预期结果以便清晰理解...
-
“使用 map 仅对通过条件的元素求和”
map不是这项工作的正确工具。循环是这项工作的正确工具:let count = 0; for (const game of dolphinGames) { if (game >= 100) { ++count; } }有些人也会使用reduce,但在使用预定义减速器的函数式编程之外,我不建议这样做——太容易出错。 (但 FWIW:let count = dolphinGames.reduce((game, count) => { if (game >= 100) { ++count; }; return count; }, 0);) -
比较团队的平均分数以确定比赛的获胜者并将其打印到控制台。包括最低分数为 100 的要求。根据此规则,只有当一个团队的得分高于另一个团队并且同时得分至少为 100 分时,它才会获胜。我希望现在理解起来会更好。
-
@Vukasin - 恐怕不会。
-
我尝试了过滤方法,效果很好。
标签: javascript arrays conditional-statements