Объединение нескольких массивов из модели данных в Swift

#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})