ios - 根据三个变量对数组进行排序

标签 ios arrays swift sorting

我有一个装有扑克牌的数组。我想根据值(value)、颜色和可玩性对这些进行排序。

  • 我有 4 种颜色; 1、2、3、4。
  • 我有 3 个可玩性选项; 1、2、3。
  • 我有 5 个值(value)观; 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:按值排序。

谢谢!

最佳答案

假设这是你的结构

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

这是你的数组

let cards:[Card] = ...

您可以按卡片排序

  1. 可玩性
  2. 颜色

写作

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
}

关于ios - 根据三个变量对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144574/

相关文章:

ios - 对设备的 iOS 5 SDK 功能与 iOS 5 功能感到困惑

arrays - 如何使用filter方法代替for in循环? swift

c++ - 如何创建二维数组 C++?

ios - Array.contains(其中 :) to return Array item that returned true

ios - Xcode 6.3.1 "A signed resource has been added, modified, or deleted"问题

ios - 如何为 UIView 制作基于图像的平铺背景,使其无法缩放?

objective-c - 如何正确释放 UITabController

ios - 如何在 Xcode 4 中每次构建(运行)iOS 应用程序之前自动运行 OCUnit 逻辑测试?

ios - 在 Outlet 集合中为按钮分配不同的值(Swift 3 Xcode 8)

PHP array_search 与关联数组