Swift 배열과 관련해서 자주 사용되고 유용한 메서드를 살펴보려고 합니다.
Swift에서 배열을 정의하고 사용하는 방법은 여러 가지가 있습니다. 기본적인 배열 생성부터 다양한 방법으로 배열을 초기화하고 접근하는 방법을 아래에 정리해 보았습니다.
빈 배열 초기화:
var intArray: [Int] = []
var stringArray: [String] = []
Array
타입을 사용하여 선언합니다.var intArray = Array<Int>()
var stringArray = Array<String>()
기본값으로 초기화:
var fiveZeros = Array(repeating: 0, count: 5)
var fiveHello = Array(repeating: "Hello", count: 5)
리터럴로 초기화:
var numbers = [1, 2, 3, 4, 5]
var words = ["apple", "banana", "cherry"]
배열 요소 접근:
let numbers = [1, 2, 3, 4, 5]
let firstNumber = numbers[0] // 1
let secondNumber = numbers[1] // 2
배열 요소 수정:
var numbers = [1, 2, 3, 4, 5]
numbers[0] = 10
print(numbers) // [10, 2, 3, 4, 5]
배열 요소 추가:
append
메서드를 사용하여 배열의 끝에 요소를 추가합니다.var numbers = [1, 2, 3]
numbers.append(4)
print(numbers) // [1, 2, 3, 4]
+=
연산자를 사용하여 배열에 요소를 추가합니다.var numbers = [1, 2, 3]
numbers += [4, 5]
print(numbers) // [1, 2, 3, 4, 5]
배열 요소 삽입:
insert
메서드를 사용하여 배열의 특정 위치에 요소를 삽입합니다.var numbers = [1, 2, 3]
numbers.insert(0, at: 0)
print(numbers) // [0, 1, 2, 3]
배열 요소 삭제:
remove
메서드를 사용하여 배열의 특정 위치에서 요소를 삭제합니다.var numbers = [1, 2, 3, 4, 5]
numbers.remove(at: 2)
print(numbers) // [1, 2, 4, 5]
removeLast
메서드를 사용하여 마지막 요소를 삭제합니다.var numbers = [1, 2, 3]
numbers.removeLast()
print(numbers) // [1, 2]
removeAll
메서드를 사용하여 모든 요소를 삭제합니다.var numbers = [1, 2, 3]
numbers.removeAll()
print(numbers) // []
for-in 루프:
for-in
루프를 사용하여 배열의 각 요소를 순회합니다.let numbers = [1, 2, 3, 4, 5]
for number in numbers {
print(number)
}
enumerated:
enumerated
메서드를 사용하여 배열의 인덱스와 값을 동시에 순회합니다.let numbers = [1, 2, 3, 4, 5]
for (index, number) in numbers.enumerated() {
print("Index \(index) has value \(number)")
}
map:
let numbers = [1, 2, 3]
let doubled = numbers.map { $0 * 2 }
print(doubled) // [2, 4, 6]
filter:
let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // [2, 4]
reduce:
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0, +)
print(sum) // 15
sorted:
let numbers = [3, 1, 4, 5, 2]
let sortedNumbers = numbers.sorted()
print(sortedNumbers) // [1, 2, 3, 4, 5]
// 빈 배열 초기화
var intArray: [Int] = []
var stringArray = Array<String>()
// 기본값으로 초기화
var fiveZeros = Array(repeating: 0, count: 5)
var fiveHello = Array(repeating: "Hello", count: 5)
// 배열 리터럴로 초기화
var numbers = [1, 2, 3, 4, 5]
var words = ["apple", "banana", "cherry"]
// 요소 추가 및 수정
numbers.append(6)
numbers[0] = 10
// 요소 삭제
numbers.remove(at: 2)
numbers.removeLast()
numbers.removeAll()
print(numbers) // []
// 배열 순회
for word in words {
print(word)
}
for (index, word) in words.enumerated() {
print("Index \(index) has value \(word)")
}
// 배열 변형
let mappedNumbers = numbers.map { $0 * 2 }
let filteredNumbers = numbers.filter { $0 % 2 == 0 }
let reducedSum = numbers.reduce(0, +)
print(mappedNumbers)
print(filteredNumbers)
print(reducedSum)
dropFirst
와 dropLast
:
let numbers = [1, 2, 3, 4, 5]
let dropFirstNumbers = numbers.dropFirst()
let dropLastNumbers = numbers.dropLast()
print(dropFirstNumbers) // [2, 3, 4, 5]
print(dropLastNumbers) // [1, 2, 3, 4]
prefix
와 suffix
:
let numbers = [1, 2, 3, 4, 5]
let prefixNumbers = numbers.prefix(3)
let suffixNumbers = numbers.suffix(2)
print(prefixNumbers) // [1, 2, 3]
print(suffixNumbers) // [4, 5]
swapAt
:
var numbers = [1, 2, 3, 4, 5]
numbers.swapAt(0, 4)
print(numbers) // [5, 2, 3, 4, 1]
shuffled
:
let numbers = [1, 2, 3, 4, 5]
let shuffledNumbers = numbers.shuffled()
print(shuffledNumbers) // 무작위로 섞인 배열 (예: [3, 1, 5, 4, 2])
sorted(by:)
:
let numbers = [5, 2, 3, 1, 4]
let sortedNumbers = numbers.sorted(by: >)
print(sortedNumbers) // [5, 4, 3, 2, 1]
reversed
:
let numbers = [1, 2, 3, 4, 5]
let reversedNumbers = numbers.reversed()
print(Array(reversedNumbers)) // [5, 4, 3, 2, 1]
compactMap
:
let numbers: [Int?] = [1, 2, nil, 4, nil, 5]
let nonOptionalNumbers = numbers.compactMap { $0 }
print(nonOptionalNumbers) // [1, 2, 4, 5]
flatMap
:
let arrayOfArrays = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let flatArray = arrayOfArrays.flatMap { $0 }
print(flatArray) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
partition(by:)
:
var numbers = [10, 1, 2, 3, 9]
let pivot = numbers.partition(by: { $0 >= 3 })
print(numbers) // [1, 2, 3, 9, 10] 또는 다른 순서
print(pivot) // 2 (첫 번째 만족하는 요소의 인덱스)
indices
:
let numbers = [1, 2, 3, 4, 5]
for index in numbers.indices {
print("Index \(index): \(numbers[index])")
}
let numbers = [1, 2, 3, 4, 5]
// dropFirst와 dropLast
let dropFirstNumbers = numbers.dropFirst()
let dropLastNumbers = numbers.dropLast()
print(dropFirstNumbers) // [2, 3, 4, 5]
print(dropLastNumbers) // [1, 2, 3, 4]
// prefix와 suffix
let prefixNumbers = numbers.prefix(3)
let suffixNumbers = numbers.suffix(2)
print(prefixNumbers) // [1, 2, 3]
print(suffixNumbers) // [4, 5]
// swapAt
var mutableNumbers = [1, 2, 3, 4, 5]
mutableNumbers.swapAt(0, 4)
print(mutableNumbers) // [5, 2, 3, 4, 1]
// shuffled
let shuffledNumbers = numbers.shuffled()
print(shuffledNumbers) // 무작위로 섞인 배열 (예: [3, 1, 5, 4, 2])
// sorted(by:)
let sortedNumbersByDescending = numbers.sorted(by: >)
print(sortedNumbersByDescending) // [5, 4, 3, 2, 1]
// reversed
let reversedNumbers = numbers.reversed()
print(Array(reversedNumbers)) // [5, 4, 3, 2, 1]
// compactMap
let optionalNumbers: [Int?] = [1, 2, nil, 4, nil, 5]
let nonOptionalNumbers = optionalNumbers.compactMap { $0 }
print(nonOptionalNumbers) // [1, 2, 4, 5]
// flatMap
let arrayOfArrays = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let flatArray = arrayOfArrays.flatMap { $0 }
print(flatArray) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
// partition(by:)
var numbersForPartition = [10, 1, 2, 3, 9]
let partitionIndex = numbersForPartition.partition(by: { $0 >= 3 })
print(numbersForPartition) // [1, 2, 3, 9, 10] 또는 다른 순서
print(partitionIndex) // 2 (첫 번째 만족하는 요소의 인덱스)
// indices
let arrayIndices = numbers.indices
for index in arrayIndices {
print("Index \(index): \(numbers[index])")
}
count
:
let elements = [1, 2, 3]
print(elements.count) // 3
isEmpty
:
let emptyArray: [Int] = []
print(emptyArray.isEmpty) // true
contains
:
let elements = [1, 2, 3]
print(elements.contains(2)) // true
first
와 last
:
let elements = [1, 2, 3]
print(elements.first) // Optional(1)
print(elements.last) // Optional(3)
reduce
:
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0, +)
print(sum) // 15
capacity
:var array = [Int]()
array.reserveCapacity(10)
print(array.capacity) // 최소한 10