在Swift数组中查找唯一值

fla*_*dev 2 arrays unique swift

我正在建立一个项目,告诉我一段文本中的独特单词。

我有我的原始字符串scriptTextView,已将每个单词添加到数组scriptEachWordInArray

我现在想创建一个名为scriptUniqueWords的数组,该数组仅包含在scriptEachWordInArray中出现一次的单词(换句话说,是唯一的)

因此,我希望我的scriptUniqueWords数组等于= [“ Silent”,“ Holy”]。

我不想创建一个没有重复项的数组,而是创建一个仅具有第一次出现一次值的数组。

var scriptTextView = "Silent Night Holy Night"
var scriptEachWordInArray = ["Silent", "night", "Holy", "night"]
var scriptUniqueWords = [String]()

for i in 0..<scriptEachWordInArray.count {

    if scriptTextView.components(separatedBy: "\(scriptEachWordInArray[i]) ").count == 1 {
        scriptUniqueWords.append(scriptEachWordInArray[i])
        print("Unique word \(scriptEachWordInArray[i])")}

}
Run Code Online (Sandbox Code Playgroud)

Vis*_*iya 6

迅速

让我们试试吧。

let array = ["1", "1", "2", "2", "3", "3"]
let unique = Array(Set(array))
// ["1", "2", "3"]
Run Code Online (Sandbox Code Playgroud)


Luc*_*tti 5

您可以使用 NSCountedSet

let text = "Silent Night Holy Night"
let words = text.lowercased().components(separatedBy: " ")
let countedSet = NSCountedSet(array: words)
let singleOccurrencies = countedSet.filter { countedSet.count(for: $0) == 1 }.flatMap { $0 as? String }
Run Code Online (Sandbox Code Playgroud)

现在singleOccurrencies包含["holy", "silent"]