【问题标题】:sort two string arrays respectively in swift在swift中分别对两个字符串数组进行排序
【发布时间】:2020-02-17 12:40:22
【问题描述】:

我正在寻找一种简单的方法来对 2 个数组进行排序,一个包含日期,另一个包含每个特定日期的时间(ar1 第一位的日期与 ar2 第一位的时间匹配)

var ar1 = ["2014-02-13", "2016-03-01", "2015-03-17", "2014-04-02", "2014-04-18"]
var ar2 = ["08:11:57", "08:11:43", "08:11:34", "08:11:18", "08:11:01"]
ar1.sort()
print(ar1)

输出:[“2014-02-13”、“2014-04-02”、“2014-04-18”、“2015-03-17”、“2016-03-01”]

我需要将ar2分别改为ar1

ar2 needs to be : ["08:11:57", "08:11:18", "08:11:01", "08:11:34", "08:11:43"]

【问题讨论】:

  • 您需要使用结构将这两个值存储在一个数组中。然后根据需要的字符串变量对数组进行排序。
  • 请分享您尝试对第一个数组进行排序的代码,即ar1?

标签: arrays swift string sorting date


【解决方案1】:

您可以zip(_:_:)两个数组ar1ar2并在基于ar1的结果数组上调用sorted(_:),即 p>

let result = zip(ar1, ar2).sorted { $0.0 < $1.0 }

let sortedAr1 = result.map({ $0.0 }) //["2014-02-13", "2014-04-02", "2014-04-18", "2015-03-17", "2016-03-01"]

let sortedAr2 = result.map({ $0.1 }) //["08:11:57", "08:11:18", "08:11:01", "08:11:34", "08:11:43"]

除了使用zip,您还可以创建arraystruct/class 实例,其中每个实例存储来自ar1ar2 的对应元素。然后sortarray 基于ar1 值。

如果您同意将结构从 2 String arrays 更改为单个 struct array,这是更好的方法。

【讨论】:

  • 另一种选择,考虑到数据的类型,将每对元素连接成一个日期/时间字符串,甚至将它们解析成一个Date对象
【解决方案2】:

创建一个结构或一个类来存储数据。然后创建该类/结构的数组并按日期对其进行排序。

struct MyDates {
   var date: String
   var time: String
}

let date1 = MyDates(date: "2014-02-13", time: "08:11:57")
let date2 = MyDates(date: "2016-03-01", time: "08:11:43")

var arrayDate = [date2, date1]
arrayDate.sort { $0.date < $1.date }

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 2020-04-13
    • 2023-04-07
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多