在Swift中对String数组进行排序

Mon*_*Sam 2 arrays sorting string ios swift

我有一个像这样的大阵列:

var tableau = ["Salut", "Hey", "Salut", "Hey", "Hey", "Mom", "Hey", "Dad", "Mom", "Hey", "Plop"]

现在我想要一个数组,每个单词按重复次数排序,所以像这样的数组:

var tableauTrier = ["Hey", "Salut", "Mom", "Dad", "Plop"]
Run Code Online (Sandbox Code Playgroud)

如何使用最少的内存对它们进行排序?请帮帮我 !

vac*_*ama 6

var tableau = ["Salut", "Hey", "Salut", "Hey", "Hey", "Mom", "Hey", "Dad", "Mom", "Hey", "Plop"]

var counts = [String: Int]()

// generate dictionary of counts for each word
for word in tableau {
    counts[word] = (counts[word] ?? 0) + 1
}

// Sort the tuples based on the count and use map to extract the word
let result = counts.sorted { $0.value > $1.value }.map { $0.key }
print(result)

// ["Hey", "Mom", "Salut", "Plop", "Dad"]
Run Code Online (Sandbox Code Playgroud)