首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得两个独立的Int数组的值,按索引配对,然后对某些对执行条件操作?

如何获得两个独立的Int数组的值,按索引配对,然后对某些对执行条件操作?
EN

Stack Overflow用户
提问于 2016-05-21 14:28:16
回答 1查看 34关注 0票数 2

因此,在我的第一个项目中,我一直在开发一个高尔夫记分卡应用程序。我有一个数组,每个球员18洞得分和一个单独的数组在另一个班级为球场标准。我可以从标准杆总数中减去总分,得到分数90(+18)的最终结果。然而,如果所有的洞都有一个标准杆,但球员只完成了9个洞,比分将看起来是45(-27)。球员的分数在默认情况下是0,所以我想试着去做。

代码语言:javascript
运行
复制
zip(playerScoreArray, courseParArray).enumerate().filter() 

在这里,我将过滤掉任何playerScore孔!= 0,将它们相加,取其中每个洞的等价物,并将它们相加,并从courseParNubers中减去完成的全部playerHoleScores。这将给我一个准确的+或-标准,只有他们完成的洞到目前为止。

我使用了Array.reduce(0,组合+),但除此之外,我还在学习操作集合和闭包的更复杂的方法。

我想要完成的事情的例子:

代码语言:javascript
运行
复制
let playerScoreArray = [7, 5, 6, 4, 0, 0, 0, 0, 0]
let holeParArray =     [4, 3, 5, 5, 4, 3, 4, 4, 4]
// get result 7-4, 5-3, 6-5, 4-5 = +5
// currentResult = 22-36 = -14

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-21 14:48:03

您可以在“减缩”中进行该测试,并且只添加那些玩家得分为非零的测试:

代码语言:javascript
运行
复制
let total = zip(playerScoreArray, holeParArray).reduce(0) { (sum, pair) in
    return pair.0 == 0 ? sum : sum + pair.0 - pair.1
}

或者在调用reduce之前过滤掉这些对:

代码语言:javascript
运行
复制
let total = zip(playerScoreArray, holeParArray).filter({ $0.0 > 0 }).reduce(0) { (sum, pair) in
    return sum + pair.0 - pair.1
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37364162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档