Swift version: 5.10
If you have an array containing various elements and you want to count how often each item appears, you can do so by combining the map()
method with a Dictionary
initializer.
First, create an array of items:
let items = ["a", "b", "a", "c"]
Second, convert that to an array of key-value pairs using tuples, where each value is the number 1:
let mappedItems = items.map { ($0, 1) }
Finally, create a Dictionary
from that tuple array, asking it to add the 1s together every time it finds a duplicate key:
let counts = Dictionary(mappedItems, uniquingKeysWith: +)
That will create the dictionary ["b": 1, "a": 2, "c": 1]
because dictionaries are not stored in order – as you can see, it tells us that “a” appeared twice, while the other two appeared once.
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.