[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:_:) 함수는 매우 유용하며, 다양한 그룹화 작업에 활용할 수 있습니다.

참고자료: