迅捷:在玩家数组中找到玩家的最低分数,并且仅在分数唯一时返回玩家

时间:2020-04-18 16:28:15

标签: ios swift iphone

我在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)]

谢谢

2 个答案:

答案 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.")
}
相关问题