Сортировать список списков по второму элементу в Swift? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть что-то вроде этого в swift:

var users = [[craig, 3], [bobbie, 6], [nygel, 3], [caroline, 8]]

, и я хочу отсортировать список по 2-му элементу в списке (т.е. порядок должен быть: [[caroline, 8], [bobb *] 1009 *, 6], [craig, 3], [nygel, 3]]

Как я могу это сделать?

Спасибо!

Ответы [ 3 ]

1 голос
/ 01 апреля 2020

Вы можете использовать last, приведение и значения по умолчанию для сортировки

users.sort(by: { $0.last as? Int ?? Int.min > $1.last as? Int ?? Int.min })
1 голос
/ 01 апреля 2020
users.sort(by: {$0[1] as? Int ?? 0 > $1[1] as? Int ?? 0})

//[caroline, 8], [bobbie, 6], [craig, 3], [nygel, 3]]
0 голосов
/ 01 апреля 2020

Я не знаю, почему вы используете Array, смешивающий String и Int, возможно, стоит рассмотреть использование структуры, как в моем примере. В противном случае другие уже опубликовали рабочие решения.

struct User{
    let name: String
    let prio: Int
    init(_ name:String, _ prio:Int) {
        self.name = name
        self.prio = prio
    }
}

var users: [User] = [User("craig", 3), User("bobbie", 6), User("nygel", 3), User("caroline", 8)]

users.sort(by: {$0.prio > $1.prio})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...