#arrays #swift
#массивы #swift
Вопрос:
У меня есть несколько массивов в модели данных. Я хотел бы взять массив из каждой из моделей данных и объединить их, а затем удалить повторяющиеся строки в массиве. Возможно ли это? Я уверен, что смогу решить, как удалить дубликаты после, но я изо всех сил пытаюсь сначала объединить их.
Моя модель данных (я пытаюсь объединить массив приложений) :
let productData: [ProductModel] = [
ProductModel(
title: "option1",
application: ["Food","Agriculture","Gin","Metals","Poylmers"]
),
ProductModel(
title: "option2",
application: ["Food","Agriculture","Gin", "Polymers"]
),
ProductModel(
title: "option3",
application: ["Food","Metals","Poylmers"]
),
ProductModel(
title: "option4",
application: ["Gin","Metals","Poylmers"]
),
]
Вот где я пытаюсь добавить массив, но все, что я, кажется, делаю, это добавляю пустую строку в каждый из массивов:
let applicationItems = products.filter { product in
let list = product.application
var collectedList = [""]
for item in list {
collectedList.append(contentsOf: list)
return true
}
return false
}
Ответ №1:
Используйте flatMap и добавьте результат в набор, чтобы получать только уникальные значения
let applications = Array(Set(productData.flatMap(.application)))
Ответ №2:
Если вы хотите объединить все строки из массивов приложений в один массив, вы можете использовать flatMap, как показано ниже:
let concatenatedArray = productData.flatMap({$0.application})
И если вы хотите объединить строки в массив strings array, вы можете использовать map, как показано ниже:
let concatenatedArray = productData.map({$0.application})