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