0

I want to sort array data by number value like "90 > 80 > 70 ...> 10".
But I don't know how to compare mutiple property.

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.
}
RajeshKumar R
  • 15,445
  • 2
  • 38
  • 70
Beginnerrrrrr
  • 537
  • 1
  • 8
  • 27

1 Answers1

1

Sort the elements by the sum of 3 numbers

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)]

RajeshKumar R
  • 15,445
  • 2
  • 38
  • 70
  • I got this Error. The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions – Beginnerrrrrr Jun 03 '19 at 08:50
  • should `Item(number1: 20.0, number2: 20.0, number3: 20.0)` really be bigger than `Item(number1: 50.0, number2: 0.0, number3: 0.0)`? – Daniel Jun 03 '19 at 09:33