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.的更详细解释。这些信息很有用!