LoginSignup
0
1

More than 3 years have passed since last update.

[Swift5]配列と配列の差集合を取得する方法

Posted at

方法

(array1 - array2 を実行する場合を考えます。)

  1. array1とarray2を結合してSetに変換
  2. 1の結果からarray2の要素を取り除く

コード

let array1 = ["a", "b", "c", "d", "e"]
let array2 = ["a", "c", "e"]

let unionSet = Set(array1 + array2)
let diffArray = Array(unionSet.subtracting(array2))
print(diffArray)
// ["b", "d"]

自作した構造体に対しても同じように実行できます。

struct Food: Hashable {
    //Hashableのプロトコルメソッド
    static func == (lhs: Food, rhs: Food) -> Bool {
        return (lhs.name == rhs.name) && (lhs.price == rhs.price)
    }

    let name: String
    let price: Int
}

let food1 = Food(name: "ラーメン", price: 800)
let food2 = Food(name: "うどん", price: 700)
let food3 = Food(name: "そば", price: 600)

let myFavoriteFood = [food1, food2, food3]
let yourFavoriteFood = [food1]

let unionSet = Set(myFavoriteFood + yourFavoriteFood)
let diffArray = Array(unionSet.subtracting(yourFavoriteFood))
print(diffArray[0], diffArray[1])
// Food(name: "うどん", price: 700) Food(name: "そば", price: 600)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1