我有物品等级
class Item {
var id:Int
var name:String
var value:Int
var isDefault:Bool
}
在Class Item的基础上我有2个[Item]类数组我希望将这个数组与第一个数组中的替换对象合并,如果id匹配则合并第二个,并且应该追加(第一个/第二个)中的所有剩余数组
let fisrt = Item(id: 1, name: "A", value: 3, isDefault:false)
let second = Item(id: 2, name: "B", value:5,isDefault:false)
let third = Item(id: 3, name: "c", value:5,isDefault:false)
var fisrtArray = [fisrt, second, third]
let fisrt2 = Item(id: 4, name: "P", value: 13, isDefault:true)
let second2 = Item(id: 2, name: "Q", value:15, isDefault:true)
let third2 = Item(id: 7, name: "R", value:15, isDefault:true)
let forth2 = Item(id: 8, name: "S", value:18, isDefault:true)
var secondArray = [fisrt2, second2, third2,forth2]
所以我的结果数组应该是
Item(id: 1, name: "A", value: 3, isDefault:false)
Item(id: 2, name: "Q", value:5,isDefault:true)
Item(id: 3, name: "c", value:5,isDefault:false)
Item(id: 4, name: "P", value: 13, isDefault:true)
Item(id: 7, name: "R", value:15, isDefault:true)
Item(id: 8, name: "S", value:18, isDefault:true)
注意:数组的大小可能是firstArray很大或者是 其次它不依赖。我用for循环做,但我认为还有其他方法
答案 0 :(得分:0)
let result = secondArray
result.append(contentsOf: fisrtArray.filter { item in
!secondArray.contains(where: { $0.id == item.id })
})
之后,您可以按result
id
进行排序