现在我的代码按字母顺序打印其字符串数组。我想做的是以[a,1],[a,2],[b,4]的方式组织数组。然后按字母顺序按int降序排列。现在你可以在我的照片中看到下面的代码正在做什么。
var yourArray = [String]()
var number = [Int]()
class ViewController: UIViewController {
@IBOutlet var labez: UILabel!
@IBOutlet var textA: UITextField!
@IBOutlet var textB: UITextField!
@IBAction func store(_ sender: Any) {
yourArray.append((textA.text!))
number.append(Int(textB.text!)!)
let d = yourArray.enumerated().map { (index,string) -> String in
guard number.count > index else { return "" }
return "\(string )\(" ")\(number[index]) "
}
let sortedArray:[String] = d.sorted { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedAscending }
labez.text = sortedArray.map { " \($0)" }.joined(separator:"\n")
}
答案 0 :(得分:1)
您应该从两个输入数组而不是字符串数组创建一个元组数组。您可以使用zip
执行此操作,而使用自定义排序功能可以轻松解决排序问题。如果字符不同,则按字母顺序排序,但如果它们相同,则根据Int值进行排序。
@IBAction func store(_ sender: Any) {
yourArray.append((textA.text!))
number.append(Int(textB.text!)!)
let tuples = zip(yourArray,number)
let sorted = tuples.sorted(by: { this, next in
if this.0 < next.0 {
return true
} else if this.0 == next.0 {
return this.1 < next.1
} else {
return false
}
})
print(sorted)
labez.text = sortedArray.map { " \($0)" }.joined(separator:"\n")
}