struct Human{
let name: String
let id: String
let travelled: String
}
struct Animal {
let name: String
let id: String
let travelled: String
}
// Consider no human and animal object can have same name
let human1 = Human(name: "vikas", id: "12", travelled: "123")
let human2 = Human(name: "jacky", id: "15", travelled: "343")
let human3 = Human(name: "lucy", id: "32", travelled: "132")
let animal1 = Animal(name: "jacky", id: "56", travelled: "8979")
let animal2 = Animal(name: "lucy", id: "78", travelled: "678")
let animal3 = Animal(name: "jimmy", id: "98", travelled: "690")
let humans = [human1, human2, human3]
let animals = [animal1, animal2, animal3]
var list = [[String: String]]()
// can we eleminate this for loop with filter or something else
for human in humans {
if let animal = animals.first(where: {$0.name == human.name}){
let data = ["humanId": human.id, "animalId": animal.id]
list.append(data)
}
}
print(list)
Вывод:
[["humanId": "15", "animalId": "56"], ["humanId": "32", "animalId": "78"]]
Есть ли способ применить несколько фильтров одновременно, чтобы получить желаемый результат Невозможно найти или создать один