Предположим, у меня есть эти два объекта:
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"),
]
Я хочу создать новый массив, который содержит имена всех категории продуктов:
func handleCategories() -> [String] {
var categoryNames = [String]()
for product in products {
for categorieItem in categorieItems {
if product.categoryId == categorieItem.id {
categoryNames.append(category.name)
}
}
}
return categoryNames
}
Этот метод работает, но я хочу написать один с закрытием (я думаю, что map () должен работать)
Результат должен быть:
categoryNames = ["animal", "chemichal", "food", "animal", "travel"]