Arrays Swift 3-检查,有多少相同的元素数组内容
我有一个[Int]数组,我需要检查所有的元素,它们与其他元素的值不相同。我想插入到新数组中的那些不相同的元素Arrays Swift 3-检查,有多少相同的元素数组内容,arrays,swift,Arrays,Swift,我有一个[Int]数组,我需要检查所有的元素,它们与其他元素的值不相同。我想插入到新数组中的那些不相同的元素 var spojeni1 = [1, 1, 2, 3, 4, 4] // Here it is values 2,3 var NewArray = [Int]() for i in spojeni1 { if { // the value hasn't another identical value in the array NewArray.append(i)
var spojeni1 = [1, 1, 2, 3, 4, 4] // Here it is values 2,3
var NewArray = [Int]()
for i in spojeni1 {
if { // the value hasn't another identical value in the array
NewArray.append(i)
}
}
希望清楚,谢谢我会使用两套:
var seenOnce: Set<Int> = []
var seenMorethanOnce: Set<Int> = []
let input = [1, 1, 2, 3, 4, 4]
for number in input
{
if seenMorethanOnce.contains(number)
{
// Skip it since it's already been detected as a dupe.
}
else if seenOnce.contains(number)
{
// We saw it once, and now we have a dupe.
seenOnce.remove(number)
seenMorethanOnce.insert(number)
}
else
{
// First time seeing this number.
seenOnce.insert(number)
}
}
var seenOnce:Set=[]
var seenMorethanOnce:Set=[]
让输入=[1,1,2,3,4,4]
用于输入中的数字
{
如果SeenMothanonce.contains(数字)
{
//跳过它,因为它已被检测为重复。
}
如果SEENNCE.contains(编号),则为else
{
//我们看过一次,现在我们有了一个骗局。
请参见当前删除(编号)
请参见插入(数字)
}
其他的
{
//第一次看到这个号码。
参见当前插入(编号)
}
}
当for循环完成时,seenOnce集合将包含您的值,如果您愿意,您可以轻松地将其转换为数组。这可以在一行中完成:
let numbers = [1, 1, 2, 3, 4, 4] // Here it is values 2,3
let uniques = Set(numbers).filter{ (n) in numbers.filter{$0==n}.count == 1 }
更新
使用Swift 4,您还可以使用字典构造函数:
let uniques = Dictionary(grouping:numbers){$0}.filter{$1.count==1}.map{$0.0}
很清楚。你在这里搜索过类似的问题吗?今年似乎至少有3-5个人问过类似的问题。我还没有在@dfdSearch发现这个问题。可能的单词包括“Swift”,“数组内容”相同。这是“Swift相同元素”中的一个。我的下一次搜索是在这个网站上。单词是“Swift数组相同删除”。这里有一个问题,有23个答案:。阅读它们,全部阅读。非常有用的代码