Swift - sort, sorted

2020. 6. 29. 13:12Language/Swift

반응형

sort()

배열을 오름 및 내림차순으로 정렬해준다.

var array = [2,1,3,5,7,6,10,9,4,8]
// [2, 1, 3, 5, 7, 6, 10, 9, 4, 8]

array.sort()
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

array.sort(by: >)
// [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

array.sort(by: <)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

sorted()

Returns the elements of the sequence, sorted.

오름 및 내림차순으로 정렬하여 배열을 반환하여 준다.

var array = [2,1,3,5,7,6,10,9,4,8]
var sortArray = array.sorted()

print(array)
// [2, 1, 3, 5, 7, 6, 10, 9, 4, 8]

print(returnArray)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

후행 클로저

후행 클로저를 사용하면 딕셔너리타입의 데이터 컨테이너 또한 정렬하여 반환 받을 수 있으며, 

구조체는 정렬 및 반환 받을 수 있다.

var dic: Dictionary<Int, Int> = [ 2 : 0, 1 : 0, 3 : 0, 5 : 0, 7 : 0,
                                  6 : 0, 10 : 0, 9 : 0, 4 : 0, 8 : 0]

// 오름 차순 정렬
let asceDic = dic.sorted { (left: Dictionary<Int, Int>.Element, right:  Dictionary<Int, Int>.Element) -> Bool in
    return left.key < right.key
}
// [(key: 1, value: 0), (key: 2, value: 0), (key: 3, value: 0), (key: 4, value: 0), (key: 5, value: 0), (key: 6, value: 0), (key: 7, value: 0), (key: 8, value: 0), (key: 9, value: 0), (key: 10, value: 0)]

// 내림차순 정렬
let descDic = dic.sorted { (left: Dictionary<Int, Int>.Element, right:  Dictionary<Int, Int>.Element) -> Bool in
    return left.key > right.key
}
// [(key: 10, value: 0), (key: 9, value: 0), (key: 8, value: 0), (key: 7, value: 0), (key: 6, value: 0), (key: 5, value: 0), (key: 4, value: 0), (key: 3, value: 0), (key: 2, value: 0), (key: 1, value: 0)]
var arrayA: [A] = [A(a: 1, b: 0), A(a: 5, b: 0), A(a: 2, b: 0), A(a: 3, b: 0), A(a: 4, b: 0)]
// [.A(a: 1, b: 0), .A(a: 5, b: 0), .A(a: 2, b: 0), .A(a: 3, b: 0), .A(a: 4, b: 0)]

arrayA.sort { (left: A, right: A) -> Bool in
    return left.a > right.a
}
// [.A(a: 5, b: 0), .A(a: 4, b: 0), .A(a: 3, b: 0), .A(a: 2, b: 0), .A(a: 1, b: 0)]

 

또한 아래 처럼  파라미터와 리턴값 까지 모두 생략하여 사용 할 수 있다.

var dic: Dictionary<Int, Int> = [ 2 : 0, 1 : 0, 3 : 0, 5 : 0, 7 : 0,
                                  6 : 0, 10 : 0, 9 : 0, 4 : 0, 8 : 0]
                                  
let descDic = dic.sorted { $0.key > $1.key }

// [(key: 10, value: 0), (key: 9, value: 0), (key: 8, value: 0), (key: 7, value: 0), (key: 6, value: 0), (key: 5, value: 0), (key: 4, value: 0), (key: 3, value: 0), (key: 2, value: 0), (key: 1, value: 0)]
반응형

'Language > Swift' 카테고리의 다른 글

Swift - flatMap, compactMap  (0) 2020.07.02
Swift - stride  (0) 2020.07.01
Swift - map  (0) 2020.06.29
Swift - filter  (0) 2020.06.29
Swift - forEach  (0) 2020.06.29