Conta le occorrenze di un determinato numero intero in un array

Come contare il numero di volte in cui un numero particolare si verifica in un array. Non riesco a trovare un metodo per questo per swift. qualcuno mi può guidare per favore?

Grazie 🙂

Xcode 9 • Swift 4

In Swift 4 puoi usare il nuovo metodo Dizionario reduce(into:) come segue:

 extension Array where Element: Hashable { var occurrences: [Element:Int] { return reduce(into: [:]) { $0[$1, default: 0] += 1 } } } 

Test del parco giochi:

 let numbers = [0, 0, 1, 1, 1, 2, 3, 4, 5, 5] numbers.occurrences // [4: 1, 5: 2, 2: 1, 0: 2, 1: 3, 3: 1] 

Xcode 8.1 • Swift 3.0.1

 extension Array where Element: Hashable { var occurrences: [Element: Int] { var result: [Element: Int] = [:] forEach{ result[$0] = (result[$0] ?? 0) + 1} return result } func occurrences(of element: Element) -> Int { return occurrences[element] ?? 0 } } 

analisi

 print(numbers.occurrences) // [2: 1, 3: 2, 1: 1, 4: 2] print(numbers.occurrencesOf(element: 0)) // 0 print(numbers.occurrencesOf(element: 1)) // 1 print(numbers.occurrencesOf(element: 2)) // 1 print(numbers.occurrencesOf(element: 3)) // 2 print(numbers.occurrencesOf(element: 4)) // 2 print(numbers.occurrencesOf(element: 5)) // 0 

Crea un dizionario, memorizza il numero la prima volta che viene trovato e inizializza la chiave con 1. Incrementalo altrimenti.

 let numArray = [1, 2, 2, 2, 5] var numCount:[Int:Int] = [:] for item in numArray { numCount[item] = (numCount[item] ?? 0) + 1 for (key, value) in numCount { println("\(key) occurs \(value) time(s)") }