[swift] 고차 함수를 사용하여 배열 내의 원소들을 특정 값 기준으로 그룹화하는 방법은 어떻게 되나요?
Swift에서는 고차 함수인 reduce(into:_:)
를 사용하여 배열 내의 원소들을 특정 값 기준으로 그룹화할 수 있습니다. reduce(into:_:)
은 초기값과 클로저를 이용하여 배열을 축소시키는 기능을 제공합니다.
let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let groupedDictionary = array.reduce(into: [:]) { (result, element) in
let key = element % 2 == 0 ? "Even" : "Odd"
result[key, default: []].append(element)
}
print(groupedDictionary)
위의 코드에서는 주어진 배열을 홀수와 짝수로 그룹화하고 있습니다. reduce(into:_:)
함수를 호출할 때, 초기값으로 빈 딕셔너리를 전달하고, 클로저에서는 각 원소를 특정 조건에 따라 “Even” 또는 “Odd”라는 키로 그룹화합니다. 만약 이미 해당 키가 딕셔너리에 존재한다면, 해당 키의 값에 원소를 추가합니다. 그렇지 않으면, 새로운 키와 값의 쌍을 추가합니다.
결과적으로 groupedDictionary
는 다음과 같은 딕셔너리가 됩니다.
["Odd": [1, 3, 5, 7, 9], "Even": [2, 4, 6, 8, 10]]
이와 같이 reduce(into:_:)
함수를 사용하여 배열 내의 원소들을 특정 값 기준으로 그룹화할 수 있습니다. reduce(into:_:)
함수는 매우 유용하며, 다양한 그룹화 작업에 활용할 수 있습니다.
참고자료: