Учитывая эти два объекта:
struct Product {
let id: Int
let title: String
let price: Int
let categoryId: Int
}
struct Category {
let id: Int
let name: String
}
Я также создал эти два массива данных:
let products = [
Product(id: 1, title: "snake", price: 20, categoryId: 1),
Product(id: 2, title: "soap", price: 20, categoryId: 2),
Product(id: 3, title: "cream", price: 20, categoryId: 3),
Product(id: 4, title: "dog", price: 20, categoryId: 1),
Product(id: 5, title: "car", price: 20, categoryId: 4),
]
let categorieItems = [
Category(id: 1, name: "animal"),
Category(id: 2, name: "chemichal"),
Category(id: 3, name: "food"),
Category(id: 4, name: "travel"),
]
Я хочу создать новый объект с именем FinalObject:
struct FinalProduct {
let id: Int
let title: String
let price: Int
let categoryName: String
}
Это будет построено с использованием объектов Product и Category, чтобы иметь имя внутри объекта FinalProduct. Вот что я сделал, используя два цикла итерации, которые работают, но не являются лучшими:
var finalProducts = [FinalProduct]()
for product in products {
for cat in categorieItems {
if product.categoryId == cat.id {
finalProducts.append(FinalProduct(id: product.id, title: product.title, price: product.price, categoryName: cat.name))
}
}
}
Как я могу упростить этот код с помощью функции карты?