- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 LeagueTeam 数组需要排序。联盟球队有常用的东西,points、shotsFor、shotsAgainst、totalShots 等。联盟将有一系列 LeagueSortOptions,例如 [.points, .shots, .shotsFor]。这将按分数排序,然后按总投篮次数排序,然后按投篮次数排序。
leagueSortOptions 由用户在创建联赛时创建,因此可以根据用户的需求采用任何顺序,例如。
[.points, .shots, .shotsFor]
[.shots, .shotsFor]
[.shotsFor, .points]
我可能需要添加更多排序选项,所以我觉得需要某种递归,而不是为每个可能的排列创建一个函数。但我就是无法理解它,已经绕了好几个小时了。任何帮助或正确方向的指示将不胜感激,谢谢:)
enum LeagueSortOptions: String, Codable {
case points = "Points", shots = "Shots", shotsFor = "Shots For"
}
struct LeagueTeam : Codable {
var name: String
var gamesPlayed: Int
var gamesWon: Int
var gamesLost: Int
var gamesDrawn: Int
var shots: Int
var points: Int
var shotsFor: Int
var shotsAgainst: Int
}
我目前使用此代码按点排序,然后按 shotFor 排序,但这仅考虑一种排列,这可能是最常见的:
teams.sort { (team1, team2) -> Bool in
if team1.points == team2.points {
if team1.shots > team2.shots { return true } else { return false }
}
if team1.points > team2.points { return true } else { return false }
}
最佳答案
您可能需要准备如下内容:
extension LeagueTeam {
func compare(to other: LeagueTeam, by sortOptions: [LeagueSortOptions]) -> ComparisonResult {
for option in sortOptions {
let num1 = self.intProperty(for: option)
let num2 = other.intProperty(for: option)
if num1 < num2 {
return .orderedAscending
} else if num1 > num2 {
return .orderedDescending
}
}
return .orderedSame
}
func intProperty(for sortOption: LeagueSortOptions) -> Int {
switch sortOption {
case .points:
return self.points
case .shots:
return self.shots
case .shotsFor:
return self.shotsFor
//`LeagueSortOptions` would have more cases?
//...
}
}
}
(您也许可以使用 KeyPath 以更快速的方式编写 intProperty(for:)
,但这是另一个问题。)
您可以将数组排序为:
var teams: [LeagueTeam] = [
LeagueTeam(name: "a", gamesPlayed: 0, gamesWon: 0, gamesLost: 0, gamesDrawn: 0, shots: 0, points: 100, shotsFor: 10, shotsAgainst: 20),
LeagueTeam(name: "b", gamesPlayed: 0, gamesWon: 0, gamesLost: 0, gamesDrawn: 0, shots: 0, points: 100, shotsFor: 20, shotsAgainst: 10),
LeagueTeam(name: "c", gamesPlayed: 0, gamesWon: 0, gamesLost: 0, gamesDrawn: 0, shots: 0, points: 110, shotsFor: 120, shotsAgainst: 100),
]
var sortOptions: [LeagueSortOptions] = [.points, .shots, .shotsFor]
teams.sort {(team1, team2) -> Bool in
return team1.compare(to: team2, by: sortOptions) == .orderedDescending
}
print(teams.map{$0.name}) //->["c", "b", "a"]
关于swift - 通过不同的排序选项对排行榜进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55685814/
我的数据库中有 2 个表,如下所示: 下面是团队表: id tname poule 1 ZF Eger heren1A 2 Pro Recco he
这期看标题已经能猜到了,主要讲的是成绩排行功能,还有对应的文件读写。那么废话不多说,让我们有请今天的主角...的设计稿: 那么主角是何方神圣呢?当然是图中的大框框—
我正在尝试在我的应用程序中实现 GameCenter。这是为了向我显示 GameCenter LeaderBoard,但它向我显示:没有项目。 -(IBAction) ShowLeader{ GKGa
这个问题在这里已经有了答案: MySQL - Get row number on select (6 个答案) 关闭 9 年前。 我有一个包含以下数据的表 USER_ID | REVENUE 1
我有一个排行榜,我想给每一行一个排名,代表他们有多少分。这是我到目前为止的代码。它工作正常,但是当两个玩家拥有相同数量的点数时,排名相同,例如,如果 DB 中有 2/2 的玩家都拥有 100 点,则他
我正在为即将到来的世界杯做一个小项目。我正在建立一个基于国家队小组的名册/排行榜/记分牌。我们的想法是获得有关小组内或淘汰赛阶段所有即将到来的比赛的信息(比分、比赛时间、比赛统计数据等)。目前我被数据
如何设置工具提示显示在所有元素之上?我需要分配坐标,以便工具提示不会关闭图表,但顶部 block 会关闭工具提示。 http://joxi.ru/L21PnlgTRPVxEm http://joxi.
我用 C# 创建了一个简单的排行榜应用程序。但是我注意到拉动和排序分数的问题。假设我在一个排序集 (95、12、60、50、66) 上运行 ZREVRANGE,然后它将按 95、66、60、50、12
我已经为我的应用设置了 google play 游戏服务并添加了排行榜。我在代码中添加了游戏 ID 和排行榜 ID。现在应用程序和游戏都已发布。 用于启动排行榜的代码 if(mclient.isCo
我目前有一些代码可以检测您在特定秒数内可以点击多少次 react 。 我正在尝试为每个人制作一个排行榜,以最高 CPS(每秒点击次数)保存前 10 名。否则代码工作完美,但我被困在排行榜上。 这是我的
当前是否有办法从网络读取 GameCenter 排行榜数据? 我正在寻找一种只读方式来在配套网站上显示排行榜。我不需要发布分数或以其他方式操作设备上的排行榜。 我感觉答案是否定的,我需要使用 Open
我正在尝试使用该按钮来拉出单个 View Gamecenter 排行榜,但无法真正弄清楚如何。我尝试了苹果论坛,但没有帮助,所以我来到了这里。帮助表示赞赏 最佳答案 将呈现 GKGameCenterV
我有一个包含以下列的表格: +----+--------+-----+------+-------+-------+-------+ | Id | Member | End | Done | Righ
我正在尝试用 MySQL 数据制作一个排行榜。 MySQL数据来自minecraft服务器上的插件。因此,我将插件的数据链接到名为 iConomy 的 MySQL 数据库 在数据库中我制作了 2 个
我有一些代码,可以计算用户在排行榜上的分数和位置,然后根据他们的分数/分数按降序显示它们。 现在我已经完成了编号,所以它看起来像这样 1 2 2 3 3 3 4 但是我想让这个更正确并根据之前的数字跳
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
我对 Couchbase 数据库非常陌生,并且需要在我们的项目中构建排行榜解决方案。理想情况下,它应该像内存排序集一样工作:添加的每个项目为 O(log(N)),O(log(N)+M),其中 N 是排
我目前正在开发这个应用程序,用于跟踪每日运行并显示排行榜。这是针对一个类的,所以我不一定要寻找代码,只是关于如何进行的一些想法。无论如何,应用程序当前将获取输入信息(从底部文本字段),创建 RaceE
现在我以这种方式显示 SwarmConnect 在线排行榜: public void showLeaderboard() { SwarmLeaderboard.showLeaderboard(
是否可以轻松实现并使用 Javascript 完成,我不确定但是.. 如下面的代码所示,我有 5 个玩家,每个玩家的分数都不同。我正在寻找代码,以便它会根据玩家的分数自动重新列出玩家。理想情况下,如果
我是一名优秀的程序员,十分优秀!