Swift - 查找列表中的重复元素

Mon*_*WTF 5 ios swift

我有以下UITextField列表:

let list = [(name1TextField, phone1TextField), (name2TextField, phone2TextField), (name3TextField, phone3TextField), (name4TextField, phone4TextField), (name5TextField, phone5TextField)]
Run Code Online (Sandbox Code Playgroud)

我正试图找到手机重复并打印出来

编辑

例如(元组可能是空的)

list = [("john", "555-444-333"), ("james", "555-444-333"), ("",""), ("bob", "333-222-111"), ("nancy", "222-111-444"), ]

output 555-444-333
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

Luc*_*tti 3

鉴于这种

var name1TextField: UITextField!
var phone1TextField: UITextField!
var name2TextField: UITextField!
var phone2TextField: UITextField!
var name3TextField: UITextField!
var phone3TextField: UITextField!
var name4TextField: UITextField!
var phone4TextField: UITextField!
var name5TextField: UITextField!
var phone5TextField: UITextField!
Run Code Online (Sandbox Code Playgroud)

和这个

let list = [(name1TextField, phone1TextField), (name2TextField, phone2TextField), (name3TextField, phone3TextField), (name4TextField, phone4TextField), (name5TextField, phone5TextField)]
Run Code Online (Sandbox Code Playgroud)

解决方案

let repeatedPhones = list
    .flatMap { $0.1?.text }
    .reduce([String:Int]()) { (var dict, phone) -> [String:Int] in
        dict[phone] = (dict[phone] ?? 0) + 1
        return dict
    }
    .filter { $0.1 > 1 && !$0.0.isEmpty }
    .map { $0.0 }
Run Code Online (Sandbox Code Playgroud)