arrays - 数组如何通过 Swift 按多个属性排序?

标签 arrays swift sorting

我想按数字值对数组数据进行排序,例如“90 > 80 > 70 ...> 10”。
但是我不知道如何比较多个属性。

struct Item {
   let number1: Double
   let number2: Double
   let number3: Double
}

let item1 = Item(number1:0, number2:0, number3:10)
let item2 = Item(number1:20, number2:0, number3:0)
let item3 = Item(number1:0, number2:30, number3:0)
let item4 = Item(number1:0, number2:0, number3:40)
let item5 = Item(number1:0, number2:50, number3:0)
let item6 = Item(number1:60, number2:0, number3:0)
let item7 = Item(number1:0, number2:70, number3:0)
let item8 = Item(number1:0, number2:0, number3:80)
let item9 = Item(number1:0, number2:90, number3:0)

var array:[Item] = [item1, item2, item3, item4, item5, item6, item7, item8, item9]

array = array.sorted { (item, nextItem) -> Bool in {
     item.number3 < nextItem.number3 //how to add item's number2 & number1 into here.
}

最佳答案

根据3个数字的总和对元素进行排序

array = array.sorted { (item, nextItem) -> Bool in
    let itemSum = item.number1 + item.number2 + item.number3
    let nextItemSum = nextItem.number1 + nextItem.number2 + nextItem.number3
    return itemSum > nextItemSum
}

[Item(number1: 0.0, number2: 90.0, number3: 0.0),
Item(number1: 0.0, number2: 0.0, number3: 80.0),
Item(number1: 0.0, number2: 70.0, number3: 0.0),
Item(number1: 60.0, number2: 0.0, number3: 0.0),
Item(number1: 0.0, number2: 50.0, number3: 0.0),
Item(number1: 0.0, number2: 0.0, number3: 40.0),
Item(number1: 0.0, number2: 30.0, number3: 0.0),
Item(number1: 20.0, number2: 0.0, number3: 0.0),
Item(number1: 0.0, number2: 0.0, number3: 10.0)]

关于arrays - 数组如何通过 Swift 按多个属性排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56423584/

相关文章:

c - 函数中结构数组的处理成员

c++ - 在 C++ 中处理数组的问题

ios - WatchKit 应用程序不包含 Watch OS 3.0 中的任何 WatchKit 扩展

ios - 如何在所有 iPhoneScreens 的屏幕中调整 ImageView

c++ - 插入到排序位置链表

java - 用Java完成一个简单的成绩簿程序,排序和清除功能

c - 全局数组或 "array"的 '#define' 的替代品?

c - 将单个字符扫描到数组中 C 编程

Swift:在容器 View /NSView 中的 NSViewController 之间切换

r - 如何在 R 中对向量进行排序,保留名称和值