【问题标题】:Sort list of lists by second element in Swift?在 Swift 中按第二个元素对列表进行排序?
【发布时间】:2020-04-01 07:36:12
【问题描述】:

我在swift中有这样的东西:

var users = [[craig, 3], [bobbie, 6], [nygel, 3], [caroline, 8]]

我想按列表中的第二个元素对列表进行排序(即顺序应该是:[[caroline, 8], [bobbie, 6], [craig, 3], [nygel, 3]]

我该怎么做?

谢谢!

【问题讨论】:

  • 你在这里使用什么样的数据结构?
  • 强烈建议您为模型使用自定义结构而不是异构数组。

标签: arrays swift list arraylist swiftui-list


【解决方案1】:

您可以使用last、强制转换和默认值进行排序

users.sort(by: { $0.last as? Int ?? Int.min > $1.last as? Int ?? Int.min })

【讨论】:

    【解决方案2】:
    users.sort(by: {$0[1] as? Int ?? 0 > $1[1] as? Int ?? 0})
    
    //[caroline, 8], [bobbie, 6], [craig, 3], [nygel, 3]]
    

    【讨论】:

      【解决方案3】:

      我不知道你为什么使用一个数组来混合一个字符串和一个整数,也许可以考虑使用像我的例子中的结构。 否则其他人已经发布了可行的解决方案。

      struct User{
          let name: String
          let prio: Int
          init(_ name:String, _ prio:Int) {
              self.name = name
              self.prio = prio
          }
      }
      
      var users: [User] = [User("craig", 3), User("bobbie", 6), User("nygel", 3), User("caroline", 8)]
      
      users.sort(by: {$0.prio > $1.prio})
      

      【讨论】:

        猜你喜欢
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        • 2021-10-16
        • 2022-08-18
        • 2016-03-17
        • 1970-01-01
        相关资源
        最近更新 更多