将Array与最多100个项目ID 's (containing duplicates) to array with unique id'进行比较
提问于
浏览1581 次
-2
我想计算来自arr1的数字出现在arr2中的次数 . 我尝试与集相交,但我不想删除重复 .
var arr1 = [1,4,5,7]
func compareCount(arr2[Int])-> Int {
//arr2 = 1,1,4,5,6,6,3,9,7,7,7,1,7
return count
//returns 9 as there are 9 elements within arr2 that exist within arr1
}
2
回答
4
您可以使用 NSCountedSet :
var arr1 = [1,4,5,7]
var arr2 = [1,1,4,5,6,6,3,9,7,7,7,1,7]
let countedSet = NSCountedSet(array: arr2)
let numberOfOccurences = arr1.reduce(into: 0) { (result, current) in
let numberOfOccurencesForCurrent = countedSet.count(for: current)
result += numberOfOccurencesForCurrent
}
print("numberOfOccurences: \(numberOfOccurences)")
编辑:
如果你不想使用 reduce() (因为你想避免使用它而不理解它),而是做一个更简单的循环:
var numberOfOccurences = 0
arr1.forEach({ numberOfOccurences += countedSet.count(for: $0) })
2
循环第一个数组并计算第二个数组中的每个过滤元素
var count = 0
arr1.forEach( { value in
count += arr2.filter( {$0 == value} ).count
})
2 回答
您可以使用
NSCountedSet
:然后,遍历
arr1
,对于每一个,您将轻松获得count(for:)
的出现次数,并且使用reduce,您可以添加它们:编辑:
如果你不想使用
reduce()
(因为你想避免使用它而不理解它),而是做一个更简单的循环:循环第一个数组并计算第二个数组中的每个过滤元素