Lebih
Swift 3 memfilter larik objek dengan elemen-elemen larik
array1 = array1.filter{ $0.arrayInsideOfArray1.contains(array2[0]) }
Kode di atas berfungsi tetapi saya mencoba memeriksa apakah semua elemen $0.arrayInsideOfArray1 cocok dengan semua elemen array2, bukan hanya [0].
Contoh:
struct User {
var name: String!
var age: Int!
var hasPet: Bool!
var pets: [String]!
}
var users: [User] = []
users.append(User(name: "testUset", age: 43, hasPet: true, pets: ["cat", "dog", "rabbit"]))
users.append(User(name: "testUset1", age: 36, hasPet: true, pets:["rabbit"]))
users.append(User(name: "testUset2", age: 65, hasPet: true, pets:["Guinea pigs", "Rats"]))
let petArr = ["cat", "dog", "rabbit"]
users = users.filter { $0.pets.contains(petArr[0]) }
Apa yang saya inginkan adalah setiap pengguna yang memiliki hewan peliharaan yang terdaftar di petArr!
16
2
Salah satu pendekatannya adalah dengan memperbarui filter Anda untuk melihat apakah ada nilai dalam pets yang ada di dalam array
petArr
:$0
pertama adalah darifilter
dan itu mewakili setiapPengguna
.$0
kedua adalah daricontains
pertama dan mewakili setiap hewan peliharaan dalam larikpets
dariPengguna
saat ini.Jika elemen-elemen di dalam larik internal adalah
Equatable
, Anda bisa menulisnya:Jika tidak, Anda bisa membuatnya, dengan mengadopsi protokol
Equatable
dan mengimplementasikan