아리의 iOS 탐구생활

[Swift] 배열(Array) 다루기 본문

Swift/자료구조

[Swift] 배열(Array) 다루기

Ari Lee 2021. 7. 30. 15:27
반응형
정리하여 지속적으로 업데이트 예정...

 

✔️ 초기화

  • 임의의 값을 넣어서 생성하기
let arr = Array(1...10)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

  • 크기가 정해진 배열
let arr = Array(repeating: 0, count: 5)
// [0, 0, 0, 0, 0]

 

 

 

 

✔️ sorted() sort() 정렬하기 

  • sort는 원본을 정렬하고, sorted는 정렬된 값을 복제하여 리턴한다. 그래서 sort 사용시 변수(var)에만 적용할 수 있으므로 주의한다.
var arr = [5, 10, 4, 8, 1, 2]
let sortedArr = arr.sorted(by: >) // [10, 8, 5, 4, 2, 1]
arr.sort() // [1, 2, 4, 5, 8, 10]

 

  • 숫자로만 이루어진 문자열 배열을 sort를 사용하여 정렬하면 제대로 정렬이 안된다. 같은 길이의 문자열일 경우 제대로 정렬이 되지만, 길이가 다를경우 맨 앞 숫자 기준으로 정렬이 이루어진다. 따라서 아래 메소드를 활용하자.
var arr = ["43", "2", "0", "20", "2", "231233", "234", "3596823948676890000453456737"]
arr.sort()
// ["0", "2", "2", "20", "231233", "234", "3596823948676890000453456737", "43"]

let arrSorted = arr.sorted{ $0.count == $1.count ? $0 < $1 : $0.count < $1.count }
// ["0", "2", "2", "20", "43", "234", "231233", "3596823948676890000453456737"]

 

 

 

✔️ reversed() 뒤집기 

let str = ["안", "녕", "하", "세", "요", "."]
let reversedStr = str.reversed()
// [".", "요", "세", "하", "녕", "안"]

 

 

 

 

✔️ joined() 합체

  • String 배열 합치기. 기본값은 빈 문자열이다.
let arr = ["나는", "고수가", "될거야", "!"]
print(arr.joined(separator: " "))
// 나는 고수가 될거야 !

 

  • 2차원 배열을 1차원 배열로 합치기
let arr = [[1], [3], [5], [7]]
let joined = arr.joined(separator: [0])
print(Array(joined))
// [1, 0, 3, 0, 5, 0, 7]

 

  • joined()를 사용하여 범위가 담긴 배열 활용
let ranges = [0..<3, 3..<6, 6..<10]
// joined를 사용하면 각각의 범위에 접근할 수 있음
for index in ranges.joined() {
    print(index, terminator: " ")
}
// 0 1 2 3 4 5 6 7 8 9

 

 

 

 

✔️ map

같은 유형 또는 다른 유형의 값을 변환하여 return한다.

 

  • String to IntArray
let arr = "1 2 3 4 5".split(separator: " ").map{ Int($0)! }

 

  • IntArray to StringArray
let arr = [1, 2, 3, 4, 5].map{ String($0) }

 

 

 

 

✔️ filter

각 요소를 조건과 비교하여 일치하는 결과물을 가진 새로운 배열을 반환한다.
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let filter = arr.filter{ $0 % 2 == 0}
// [2, 4, 6, 8, 10]
let arr = ["abc", "12", "가나다", "34", "!?."]
let filter = arr.filter{ $0.count == 3 }
// ["abc", "가나다", "!?."]

 

 

 

 

 

✔️ reduce

각 요소들을 하나의 데이터로 통합하는 메서드.
let arr = [1, 2, 3, 4, 5]
let sum = arr.reduce(0,+) // 15
let multiply = arr.reduce(1, *) // 120

 

 

 

 

✔️ Apple 공식문서 참고

  • Array
 

Apple Developer Documentation

 

developer.apple.com

 

  • joined()
 

Apple Developer Documentation

 

developer.apple.com

  • reversed()
 

Apple Developer Documentation

 

developer.apple.com

  • sorted()
 

Apple Developer Documentation

 

developer.apple.com

  • sort()
 

Apple Developer Documentation

 

developer.apple.com

  • map
 

Apple Developer Documentation

 

developer.apple.com

  • filter
 

Apple Developer Documentation

 

developer.apple.com

  • reduce
 

Apple Developer Documentation

 

developer.apple.com

 

반응형
Comments