포스트

배열에서 일치하는 항목을 계산하는 방법

Swift 6.0부터 count(where:) 메서드가 새로 나왔는데, 스위프트 6.0을 사용하지 않는다면 아래 확장해서 사용하면 된다.

스위프트에서 배열이나 컬렉션 안에서 특정 항목의 개수를 구하고 싶으면 filter()를 이용해서 구할 수 있다.

예를 들어, 0과 1을 구성하는 배열에서 1의 개수를 구하고 싶다면 아래와 같이 작성할 수 있다.

1
let allOnesCount1 = [0, 1, 0, 1, 1, 1, 0, 1].filter { $0 == 1 }.count

배열 같은 컬렉션에서 자주 사용할 수 있기 때문에 Collection을 확장해서 사용할 수 있다.

1
2
3
4
5
extension Collection {
    func count(where condition: (Element) throws -> Bool) rethrows -> Int {
        return try self.filter(condition).count
    }
}

이렇게 확장해서 사용한다면 아래와 같이 작성할 수 있다.

1
let allOnesCount2 = [0, 1, 0, 1, 1, 1, 0, 1].count { $0 == 1 }


참고

How to count matching items in an array

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.