Сортировать массив дважды, сохранить первую сортировку и добавить второй сортировку - PullRequest
0 голосов
/ 06 ноября 2018

у меня var array: [Double] = [0.0, 1.000002, 0.0, 0.0].

Я хочу отсортировать мой массив. В первый раз мне нужно отсортировать по моему приоритету , например:

secondElement: 1.000002

firstElement: 0.0

thirdElement: 0.0

fourthElement: 0.0

А потом мне нужна вторая сортировка по arc4random , но нужно сохранить первую сортировку (var2 на сверху всех . Другие элементы сортируются по arc4random ). Я хочу видеть мой массив так:

secondElement: 1.000002

thirdElement: 0.0

firstElement: 0.0

fourthElement: 0.0

или

secondElement: 1.000002

thirdElement: 0.0

fourthElement: 0.0

firstElement: 0.0

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете сделать это:

var array: [Double] =  [0.0, 1.000002, 0.0, 0.0]
let sorted: [Double] = array.sorted(by: >)
let sortAndRandomize: [Double] = sorted.prefix(1) + sorted.dropFirst().shuffled()

Если вы хотите изменить исходный массив, то:

var array: [Double] =  [0.0, 1.000002, 0.0, 0.0]
array.sort(by: >)
array = array.prefix(1) + array.dropFirst().shuffled()
...