Array #3
Comparing Arrays
let a = ["A", "B", "C"]
let b = ["a", "b", "c"]
// elements를 비교하고 저장 순서도 비교
a == b
a != b
// 메소드로 비교
a.elementsEqual(b)
// 비교조건 직접 구현
// 대소문자 무시
a.elementsEqual(b, by: { (lhs, rhs) -> Bool in
return lhs.caseInsensitiveCompare(rhs) == .orderedSame
})
Finding Elements
// 배열 검색
let nums = [1, 2, 3, 1, 4, 5, 2, 6, 7, 5, 0]
// 파라미털 전달한 요소가 배열에 있으면 true 반환
nums.contains(1)
// 검색조건 직접 구현
nums.contains { (n) -> Bool in
return n % 2 == 0
}
// 검색된 요소 반환, 검색된 요소가 없다면 nil
nums.first { (n) -> Bool in
return n % 2 == 0
}
// 검색된 요소의 index 반환, 검색된 요소가 없다면 nil
nums.firstIndex { (n) -> Bool in
return n % 2 == 0
}
// 파라미터에 해당하는 요소의 index 반환
// 앞에서 부터
nums.firstIndex(of: 1)
// 뒤에서 부터
nums.lastIndex(of: 1)
Sorting on Array
// 배열 정렬
// 두가지 카테고리로 분류
// 1. sort : 배열을 직접 정렬
// 2. sorted : 정렬된 새로운 배열 리턴
// nums.sort()
nums.sorted()
nums
// 정렬 코드를 직접구현
nums.sorted { (a, b) -> Bool in
a > b
}
nums.sorted().reversed() // 새로운 배열 생성하지 않고 기존의 배열을 정렬한 모양의 메모리 공유
[Int](nums.sorted().reversed()) // 정렬 후 새로운 배열 생성
var mutableNums = nums
// 새로운 배열 리턴 x 기존의 배열을 바꿈
mutableNums.sort()
mutableNums.reverse()
// 특정 위치에 있는 elements 교체
mutableNums
mutableNums.swapAt(0, 1)
// 랜덤으로 섞음
mutableNums.shuffle()