【问题标题】:Sort an array on three variables [duplicate]根据三个变量对数组进行排序[重复]
【发布时间】:2017-11-06 19:44:47
【问题描述】:

我有一个带有扑克牌的数组。我想按价值、颜色和可玩性对它们进行排序。

  • 我有 4 种颜色; 1、2、3、4。
  • 我有 3 个可玩性选项; 1、2、3。
  • 我有 5 个值; 1、2、3、4、5。

我能够根据颜色和值对数组进行排序。因此,如果颜色相同,则数组按值排序。

颜色值对示例:

1-2, 1-4, 1-5, 2-2, 3-1, 3-2, 3-5

代码是,

playerCards.sort {
       if $0.colorSorter == $1.colorSorter {
            return $0.value < $1.value
       }
        return $0.colorSorter < $1.colorSorter
    }

如何添加第三个参数以另外对可玩性进行排序?

我想看到的(可玩性-颜色-值三元组):

1-1-2, 1-1-4, 1-2-2, 1-3-1, 2-1-5, 2-3-1, 2-3-2, 3-3-5

1:按可玩性排序 2:按颜色排序 3:按值排序。

谢谢!

【问题讨论】:

标签: ios arrays swift sorting


【解决方案1】:

假设这是你的结构

struct Card {
    let color:Int
    let value:Int
    let playability:Int
}

这是你的数组

let cards:[Card] = ...

您可以对cards 进行排序

  1. playability
  2. color
  3. value

写作

let sorted = cards.sorted { (left, right) -> Bool in
    guard left.playability == right.playability else { return left.playability < right.playability }
    guard left.color == right.color else { return left.color < right.color }
    return left.value < right.value
}

【讨论】:

  • 正是我需要的!谢谢!
猜你喜欢
  • 2017-12-29
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 2012-06-15
  • 2011-10-28
  • 1970-01-01
相关资源
最近更新 更多