gpt4 book ai didi

arrays - Swift - 对具有 bool 值和可选日期的人员数组进行排序

转载 作者:行者123 更新时间:2023-12-05 02:40:10 25 4
gpt4 key购买 nike

我想根据 3 个标准对一组人进行排序:这个数组由具有 3 个信息的客户组成:

  1. 姓名(字符串)
  2. 已购买( bool 值)
  3. 购买日期(如果 hasPurchased = false,则可以为 nil)

我可以按姓名对客户进行排序,没问题:

    customersList.sort(by: {$0.name!.compare($1.name!) == .orderedAscending})

我可以按 bool 值和名称排序,没问题:

    customersList.sort {$1.hasPurchased == $0.hasPurchased ? ($0.name!.compare($1.name!) == .orderedAscending) : $1.hasPurchased && !$0.hasPurchased}

但我想做的是在单个数组中排序:

  1. 首先,通过 bool 值和名称(hasPurchased = false,名称orderedAscending)
  2. 然后,如果 hasPurchased = true,按购买日期排序,比较按升序排列的日期

这样,我会将尚未购买的“ABC”客户保存在一个数组中,然后将购买的客户按购买日期排序(在本例中为非空条件)...

说说你的看法

最佳答案

请注意,sort 的参数称为“areInIncreasingOrder”。给定两个 Customer 对象,您应该返回它们是否按递增顺序排列。因此,要确定两个客户是否按照您的 2 条规则递增:

  • 如果它们有不同的 hasPurchased 值,如果第二个购买了而第一个没有购买,则它们按升序排列
  • 否则,如果它们的 hasPurchased 值相同且为 false,则如果第一个的名字与第二个的名字按升序排列,则它们按升序排列
  • 否则,如果他们具有相同的 hasPurchasedtrue,则如果第一个的购买日期与第二个的购买日期按升序排列,则他们按升序排列日期

将其转化为代码:

customerList.sort { c1, c2 in
if c1.hasPurchased != c2.hasPurchased {
// non-purchased customers are ordered before purchased customers
return c2.hasPurchased && !c1.hasPurchased
} else if !c1.hasPurchased { // both are non-purchased customers
// sort by name
return c1.name < c2.name
} else { // both are purchased customers
// sort by date
return c1.purchaseDate! < c2.purchaseDate!
}
}

关于arrays - Swift - 对具有 bool 值和可选日期的人员数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68710743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com