📅  最后修改于: 2023-12-03 15:10:08.916000             🧑  作者: Mango
在 Swift 4 中,要按字母顺序对数组进行排序非常容易。我们可以使用 sort()
方法和闭包来完成这个任务。
我们可以通过将每个字符串与其 sorted()
的版本进行比较,来按字母顺序排序数组。
let arr = ["orange", "apple", "pear", "banana"]
let sortedArr = arr.sorted { $0.localizedCaseInsensitiveCompare($1) == .orderedAscending }
print(sortedArr) // ["apple", "banana", "orange", "pear"]
上述代码中,我们首先定义了一个字符串数组 arr
。然后,我们使用 sorted()
方法并提供闭包来排序该数组。在闭包中,我们使用 $0.localizedCaseInsensitiveCompare($1) == .orderedAscending
来比较字符串大小写不敏感地通过字母排序。最后,我们使用 print()
将排序后的数组打印出来。
如果我们想按字母顺序对自定义对象数组进行排序,我们需要为对象定义一个比较函数。
假设我们有一个 Person
类型:
class Person {
let name: String
init(name: String) {
self.name = name
}
}
现在,我们希望按照 name
属性的字母顺序对 Person
对象数组进行排序。
let arr = [Person(name: "Lily"), Person(name: "Tom"), Person(name: "Lucy"), Person(name: "Annie")]
let sortedArr = arr.sorted { $0.name.localizedCaseInsensitiveCompare($1.name) == .orderedAscending }
print(sortedArr.map { $0.name }) // ["Annie", "Lily", "Lucy", "Tom"]
在上面的示例中,我们定义了一个 Person
类型的数组 arr
。我们使用 sorted()
方法并提供闭包来排序该数组。在闭包中,我们访问每个 Person
对象的 name
属性,并将它们进行比较。最后,我们使用 map()
方法来返回已排序的 Person
对象的名称数组,并将其打印出来。
在 Swift 4 中,按字母顺序排序数组非常容易。我们可以使用闭包和 sorted()
方法来按字母顺序排序字符串数组和自定义对象数组。