Вы можете использовать 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)
Затем, выполнить итерацию по arr1
, и для каждого вы легко получите число вхождений с count(for:)
и при уменьшении,Вы можете добавить их:
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) })