如何检查数组中是否存在重复值?

Pan*_*kil 3 duplicates nsmutablearray ios swift

var arrEmails = NSMutableArray()
arrEmails = ["a.a@gmail.com", "a.a1@gmail.com", "a.a@gmail.com", "b.b@gmail.com", "c.c@gmail.com", "a.a1@gmail.com"]
Run Code Online (Sandbox Code Playgroud)

上面是我的数组,我想检查是否有任何重复的值。为此,我写了下面的代码。

let set = NSCountedSet.init(array: arrEmails as! [Any])
        var duplicates: Int = 0

        for var object in set {
            if set.count(for: object) > 1 {
                duplicates = duplicates+1
            }
        }
Run Code Online (Sandbox Code Playgroud)

但在上面的代码中,如果数组包含如下值,则返回重复值 1。

arrEmails = ["a.a@gmail.com", "", "", "b.b@gmail.com", "", ""]
Run Code Online (Sandbox Code Playgroud)

我不想删除重复值,我只想检查数组中重复值的数量。怎么查?请帮帮我。

Luc*_*tti 6

首先停止使用NSMutableArray和使用 Swift 数组。

所以你有这个数组

let emails = ["a.a@gmail.com", "a.a1@gmail.com", "a.a@gmail.com", "b.b@gmail.com", "c.c@gmail.com", "a.a1@gmail.com"]
Run Code Online (Sandbox Code Playgroud)

现在你可以简单地检查是否有重复

let hasDuplicates = emails.count != Set(emails).count
Run Code Online (Sandbox Code Playgroud)

请注意,这仅在数组的泛型类型为Hashable.