Ios 如何比较两个数组以获得相似对象的计数?
我有两个字符串数组,每个数组中有唯一数量的内容和数据 我希望能够找到两个数组中出现的项目数 例如:Ios 如何比较两个数组以获得相似对象的计数?,ios,arrays,swift,compare,Ios,Arrays,Swift,Compare,我有两个字符串数组,每个数组中有唯一数量的内容和数据 我希望能够找到两个数组中出现的项目数 例如: var array1 = ["Duck", "Dog", "Cat", "Bird", "Elephant", "Cow", "Goat", "Goose"] var array2 = ["Eagle", "Giraffe", "Cow", "Elephant", "Sheep", "Penguin", "Rhinoceros"] 这应该打印2,因为奶牛和大象同时出现在array1和array2
var array1 = ["Duck", "Dog", "Cat", "Bird", "Elephant", "Cow", "Goat", "Goose"]
var array2 = ["Eagle", "Giraffe", "Cow", "Elephant", "Sheep", "Penguin", "Rhinoceros"]
这应该打印2,因为奶牛和大象同时出现在array1和array2中
我的进度如下。这会引发错误:闭包元组参数“(偏移量:Int,元素:(String,String))”不支持使用隐式参数进行分解
如何查找两个数组中出现的项目数?注意,永远不会有3个或更多数组。始终将比较2个阵列。也许您可以使用
设置操作:
var array1 = ["Duck", "Dog", "Cat", "Bird", "Elephant", "Cow", "Goat", "Goose"]
var array2 = ["Eagle", "Giraffe", "Cow", "Elephant", "Sheep", "Penguin", "Rhinoceros"]
print( Set(array1).intersection(array2).count ) //-> 2
也许您可以使用Set
操作:
var array1 = ["Duck", "Dog", "Cat", "Bird", "Elephant", "Cow", "Goat", "Goose"]
var array2 = ["Eagle", "Giraffe", "Cow", "Elephant", "Sheep", "Penguin", "Rhinoceros"]
print( Set(array1).intersection(array2).count ) //-> 2
通过返回从数组
s创建的两个集合
s的交集,可以创建一个通用函数来返回两个数组的公共元素。由于集合
的元素需要符合可散列
,因此需要泛型类型限制
func commonElements<T:Hashable>(between array1:[T],and array2:[T])->[T]{
return Array(Set(array1).intersection(Set(array2)))
}
commonElements(between: array1, and: array2) // ["Cow", "Elephant"]
通过返回从数组
s创建的两个集合
s的交集,可以创建一个通用函数来返回两个数组的公共元素。由于集合
的元素需要符合可散列
,因此需要泛型类型限制
func commonElements<T:Hashable>(between array1:[T],and array2:[T])->[T]{
return Array(Set(array1).intersection(Set(array2)))
}
commonElements(between: array1, and: array2) // ["Cow", "Elephant"]
它们是否也总是相同的长度,并且每个数组中的元素不会重复?否。这里唯一一致的因素是始终有2个数组。内容和长度将有所不同。编辑:顺序也不一致。同一数组中重复的元素?它们是否也总是相同的长度,并且每个数组中的元素不会重复?否。唯一一致的因素是始终有2个数组。内容和长度将有所不同。编辑:顺序也将不一致。在同一数组中重复元素?那是难以置信的快!很有魅力!!多谢各位@OOPer@Joe,请记住,如果您想使用除==
(例如大小写不敏感比较)之外的其他等式检查,则使用集
将有点困难。谢谢您的指导。对于这种比较,它总是区分大小写的,所以您的解决方案应该可以正常工作。再次感谢!真是太快了!很有魅力!!多谢各位@OOPer@Joe,请记住,如果您想使用除==
(例如大小写不敏感比较)之外的其他等式检查,则使用集
将有点困难。谢谢您的指导。对于这种比较,它总是区分大小写的,所以您的解决方案应该可以正常工作。再次感谢!感谢您对@Dávid.的更详细解释。这些信息很有用!感谢您对@Dávid.的更详细解释。这些信息很有用!