ios - 在我的例子中只有一个数组元素要排序

标签 ios swift swift3

我有一个字符串列表:

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/

相关文章:

ios - 如何在新的 swift 文件中通过 swift 覆盖延迟加载 dataArr?

swift - 如何在使用 Swift 3 中的 Measurements 的函数调用中使用泛型

arrays - 在 swift 3 中使用 Json

ios - 如何在 iOS 7 应用程序上启用后台更新

ios - UIView 上的 CollectionView 单元实例(委托(delegate)之外)无法快速运行 5

iphone - 如何等待然后执行基于 HTTPrequest 响应 iOS 的操作

arrays - 用于填充 SWIFT 中 Tableview 部分的结构体和数组

ios - 如何使用 Swift 删除注销按钮并永久存储 session FBSDK IOS

swift - 如何覆盖子类中的数组 var?

ios - 异步任务不更改外部变量。 swift 3