我在Player结构上有一个称为score的属性。我正在尝试寻找一种方法来筛选一系列玩家以找到最低分数。但条件是,只有分数低(分数不能与其他玩家匹配)时,才应返回玩家。否则,如果两个或两个以上的球员确实拥有相同的低分,则返回所有分数最低的球员。 下面是代码示例:
struct Player {
var score: Int
}
let players = [Player(score: 4), Player(score: 7), Player(score: 5), Player(score: 3), Player(score: 3), Player(score: 8), Player(score: 3)]
谢谢
答案 0 :(得分:-1)
此功能为您提供了得分最低的running for loop: 1
running for loop: 2
running for loop: 3
18:34:57.147132900 to loop: 2
18:34:57.147132900 to loop: 3
18:34:57.147132900 to loop: 1
18:35:57.137764800 to loop: 3
18:35:57.137764800 to loop: 2
18:35:57.137764800 to loop: 1
etc...
数组:
running for loop: 1
18:34:57.147132900 to loop: 1
18:35:57.147132900 to loop: 1
18:36:57.147132900 to loop: 1
18:37:57.147132900 to loop: 1
running for loop: 2
18:38:57.147132900 to loop: 2
18:39:57.147132900 to loop: 2
running for loop: 3
18:40:57.147132900 to loop: 3
18:41:57.147132900 to loop: 3
18:42:57.147132900 to loop: 3
答案 1 :(得分:-1)
struct Player {
var score: Int
}
let players = [Player(score: 4), Player(score: 7), Player(score: 5), Player(score: 9), Player(score: 3), Player(score: 8), Player(score: 3)]
func playerWithLowestScore(players: [Player]) -> Player? {
// sort
let sortedPlayers = players.sorted() { $0.score < $1.score }
// filter by lowest score
let filtered = sortedPlayers.filter() { $0.score == sortedPlayers[0].score }
return filtered.count == 1 ? filtered[0] : nil
}
let solePlayerWithLowestScore = playerWithLowestScore(players: players)
if let player = solePlayerWithLowestScore {
print(player)
} else {
print("No single player with a low score.")
}