首页 > 解决方案 > 如何根据内部数组值对外部数组进行排序?

问题描述

我有一个元组数组,元组包含结构数组Bill

let billDetails = [(name:String, bills:[Bill])]()

struct Bill {
    var date: Date
}

内部数组bills已按日期属性排序。现在我想根据内部数组的第一个对象的日期属性对外部数组进行排序。

如何在不强制展开的情况下做到这一点?

billDetails = billDetails.sorted(by: { $0.bills.first!.date < $1.bills.first!.date })

标签: swift

解决方案


bills如果项目为空,您需要决定将项目放在哪里。实际上只有 2 个选项,将它们放在数组的开头或数组的后面。

您可以使用??提供默认值,distantFuture或者distantPast取决于您希望空账单去哪里。

// empty bills last
billDetails.sort(by: { $0.bills.first?.date ?? Date.distantFuture < $1.bills.first?.date ?? Date.distantFuture })
// or empty bills first
billDetails.sort(by: { $0.bills.first?.date ?? Date.distantPast < $1.bills.first?.date ?? Date.distantPast })

推荐阅读