Самый простой способ заключается в использовании нового Set
контейнера (добавленный в Swift 1.2/Xcode 6.3):
var setA = Set(arrayA)
var setB = Set(arrayB)
// Return a set with all values contained in both A and B
let intersection = setA.intersect(setB)
// Return a set with all values in A which are not contained in B
let diff = setA.subtract(setB)
Если вы хотите переназначить образовавшееся установлен arrayA
, просто создать новый экземпляр, используя копию конструктор и присвоить его arrayA
:
arrayA = Array(intersection)
недостатком является то, что вы должны создать 2 новых наборов данных. Обратите внимание, что intersect
не мутирует экземпляр, в который он вызывается, он просто возвращает новый набор.
Есть аналогичные методы для сложения, вычитания и т.д., вы можете посмотреть на них
Это оказалось правильным ответом, спасибо. –
Это решение хорошо подходит для небольших массивов, но его необходимо учитывать, что его сложность O (n^2). Для больших массивов я бы рассмотрел преобразование 'arrayA' в набор и использование его для' find' - это должно уменьшить сложность до O (2n) – Antonio