Массив, как сортировать по множественному свойству по Swift? - PullRequest
0 голосов
/ 03 июня 2019

Я хочу отсортировать данные массива по числовому значению, например "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.
}

1 Ответ

1 голос
/ 03 июня 2019

Сортировать элементы по сумме из 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
}

[Элемент (номер 1: 0,0, номер 2: 90,0, номер 3: 0,0),
Элемент (число 1: 0,0, число 2: 0,0, число 3: 80,0),
Элемент (число 1: 0,0, число 2: 70,0, число 3: 0,0),
Элемент (номер 1: 60,0, номер 2: 0,0, номер 3: 0,0),
Элемент (число 1: 0,0, число 2: 50,0, число 3: 0,0),
Элемент (число 1: 0,0, число 2: 0,0, число 3: 40,0),
Элемент (число 1: 0,0, число 2: 30,0, число 3: 0,0),
Элемент (число 1: 20,0, число 2: 0,0, число 3: 0,0),
Элемент (число 1: 0,0, число 2: 0,0, число 3: 10,0)]

...