分别对 2 个连接的数组进行排序;按字母顺序和降序排列 (swift3)
Sort 2 joined arrays separately; in alphabetical order and in descending order (swift3)
现在我的代码按字母顺序打印它的字符串数组。我想做的是以 [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 { [=10=].localizedCaseInsensitiveCompare() == ComparisonResult.orderedAscending }
labez.text = sortedArray.map { " \([=10=])" }.joined(separator:"\n")
}
您应该从两个输入数组创建一个元组数组,而不是一个字符串数组。您可以使用 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 { " \([=10=])" }.joined(separator:"\n")
}
现在我的代码按字母顺序打印它的字符串数组。我想做的是以 [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 { [=10=].localizedCaseInsensitiveCompare() == ComparisonResult.orderedAscending }
labez.text = sortedArray.map { " \([=10=])" }.joined(separator:"\n")
}
您应该从两个输入数组创建一个元组数组,而不是一个字符串数组。您可以使用 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 { " \([=10=])" }.joined(separator:"\n")
}