I have two different arrays which am trying to map them to one object, using the information in the first array ModelOne id. I use two for loops to check if the id in model one appears in the second array if true create an object with model one id, name and array of all names in model two. From my implementation am not able to get the correct results.
// Model One struct ModelOne: Codable { let id: Int let name: String } // Model two struct ModelTwo: Codable { let id: Int let modelOneId: Int let name: String } var arrayOne = [ModelOne]() arrayOne.append(ModelOne(id: 1, name: "One")) arrayOne.append(ModelOne(id: 2, name: "Two")) var arrayTwo = [ModelTwo]() arrayTwo.append(ModelTwo(id: 1, modelOneId: 1, name: "Some name")) arrayTwo.append(ModelTwo(id: 2, modelOneId: 1, name: "Other name")) arrayTwo.append(ModelTwo(id: 1, modelOneId: 2, name: "Name one")) arrayTwo.append(ModelTwo(id: 2, modelOneId: 2, name: "Name two")) struct MappedModel { let id: Int let name: String let items: [String] } var arrayThree = [MappedModel]() for i in arrayOne { for x in arrayTwo { if i.id == x.id { arrayThree.append(MappedModel(id: i.id, name: i.name, items: [x.name])) } } }