我有一个字符串列表:
var nameList = ["Apple", "Watermelon", "orange", ...]
后台返回列表,顺序不保证。
我只想让 orange
始终是数组中的第一个元素,不需要关心其他元素的顺序。
我尝试使用 nameList.sort { $0//what to do}
,但卡住了,因为我只想让一个元素成为第一个元素。
如何实现?
======更新======
后续问题。如果我有一个水果对象列表,每个 fruit
都是一个自定义的 struct
对象:
struct Fruit {
public let name;
public let weight;
init(_ name: String, _ weight: Double) {
self.name = name
self.weight = weight
}
}
现在,我得到了一个Fruit
列表:
var fruitList:[Fruit] = getDataFromBackend()
我想让名称
为“orange”的fruit
永远是第一个项,现在怎么办?
最佳答案
你可以找到 "orange"
的索引,并将它换成第 0 个索引:
if let indexOfOrange = nameList.index(of: "orange") {
if indexOfOrange != 0 {
swap(&nameList[0], &nameList[indexOfOrange])
}
}
如果列表可以有多个橙子,请改用此代码段:
let sorted = nameList.filter {$0 == "orange"} + nameList.filter {$0 != "orange"}
它将所有橙子的列表与所有非橙子的列表连接起来。
关于ios - 在我的例子中只有一个数组元素要排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46154088/