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.")
}