2017-02-26 65 views
0

我有一个数组循环数组,清除唯一值,只留下重复

allIDs = ["1", "2", "2", "3", "4", "4"] 

我用

sortedIDs = Array(Set(allIDs)) 

现在我想删除的唯一字符串中做出独特的内容allIDs数组,所以只剩下重复项。

for item in sortedIDs { 
while allIDs.contains(item) { 
    if let itemToRemoveIndex = allIDs.index(of: item) { 
     allIDs.remove(at: itemToRemoveIndex) 
     print(allIDs) 
    } 
} 

}

这给了我一个allIDs数组,它是空的。我难以理解应该循环四次的for循环是循环六次并删除所有项目。 谢谢。

+0

@dtd这不是重复的。 OP已经知道如何删除重复项。问题是创建一个只包含重复项的最终数组。 – rmaddy

+2

您的预期成果是什么? '[“2”,“2”,“4”,“4”]还是'[“2”,“4”]? – Hamish

+0

我的不好。我会删除我的评论。但我可能会建议编辑问题标题以反映实际问题。 – dfd

回答

0

我假设你想要的结果是["2", "4"];从原始数组中删除重复数组以获取sortedIDs数组。

您的问题是while循环正在循环,直到从allIDs中删除项目的所有副本。如果您只需对sortedIDs中的每个项目执行1次删除,就会得到您想要的结果:

for item in sortedIDs { 
    if let itemToRemoveIndex = allIDs.index(of: item) { 
     allIDs.remove(at: itemToRemoveIndex) 
     print(allIDs) 
    } 
}