Как правильно достать данные из кортежа

Подскажите пожалуйста, как правильно достать первый элемента кортежа если второй удовлетворяет условию? Я сделал обычный способ, но думаю есть более рациональное решение.

    var myArray: [(Int, Int)] = [(13, 5), (23, 5), (12, 1), (12, 3), (5, 3)]
var newArray: [Int] = []

for i in myArray {
    if i.1 == 5 {
        newArray.append(i.0)
    }
}

Ответы (1 шт):

Автор решения: schmidt9

Вот так можно - сначала отбираем кортежи, где есть 5, с помощью filter потом создаем новый массив c помощью map

newArray = myArray.filter { $0.1 == 5 }.map { $0.0 }
→ Ссылка