Swift:在玩家数组中查找最低分数的玩家,并且仅当分数唯一时才找到 return 玩家
Swift: Find lowest score of player in players array and return player only if score is unique
我在 Player 结构上有一个名为 score 的 属性。我试图找到一种方法来过滤一系列玩家以找到最低分数。但条件是它应该 return 玩家只有当它有一个独特的低分(分数不能匹配另一个玩家)。否则,如果两个或更多玩家确实具有相同的低分 return 所有最低分玩家的数组。
以下是代码示例:
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)]
谢谢
此函数为您提供 Player
的数组,其中得分最低的是:
func getLowestScorePlayers(for players: [Player]) -> [Player] {
let minScore = players.map { [=10=].score }.min()
return players.filter { [=10=].score == minScore }
}
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() { [=10=].score < .score }
// filter by lowest score
let filtered = sortedPlayers.filter() { [=10=].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.")
}
我在 Player 结构上有一个名为 score 的 属性。我试图找到一种方法来过滤一系列玩家以找到最低分数。但条件是它应该 return 玩家只有当它有一个独特的低分(分数不能匹配另一个玩家)。否则,如果两个或更多玩家确实具有相同的低分 return 所有最低分玩家的数组。 以下是代码示例:
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)]
谢谢
此函数为您提供 Player
的数组,其中得分最低的是:
func getLowestScorePlayers(for players: [Player]) -> [Player] {
let minScore = players.map { [=10=].score }.min()
return players.filter { [=10=].score == minScore }
}
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() { [=10=].score < .score }
// filter by lowest score
let filtered = sortedPlayers.filter() { [=10=].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.")
}