Swiftで2つの配列が一致しているかの判定処理

はじめに

配列と単一の値の判定などはよく記事になっていますが、2つの異なる配列に差分があるかの判定処理の判例がなかったので考えてみました。

Setを使った判定

Setには対称差を取得できるsymmetricDifferenceというメソッドが用意されているので差分があるかで配列同士の一致を判定させることができます。

個人的にSetを使う機会があまりないのでぱっと見何をやってるかわからなくなりそうですがおそらくこれが一番ベストな方法なのかなと思っています。

let arrA = [1, 2, 4]
let arrB = [1, 2, 4]

let isEqual = Set(arrA).symmetricDifference(Set(arrB)).isEmpty
print(isEqual)

// true

FilterとContainsで判別する

配列同士を総なめにして判定することも可能です、ですがSetでやる場合と比べて計算量が増えてしまうのでSetの方が良いやり方なのかなと思います。

let arrA = [1, 2, 4]
let arrB = [1, 2, 4]

let isEqual = arrA.filter{ !arrB.contains($0) }.isEmpty
print(isEqual)

// true