我有两个数组,它们有相同的模型。通过比较两个数组来找到对象
我试图找到它具有相同ID的对象。我试过这种方法,我可以找到它,但我怎么可以让它没有循环?
for item in userList {
let userSelection = user.list.first(where: {$0.id == item.id})
item.approved = userSelection.approved
print(userSelection)
}
我有两个数组,它们有相同的模型。通过比较两个数组来找到对象
我试图找到它具有相同ID的对象。我试过这种方法,我可以找到它,但我怎么可以让它没有循环?
for item in userList {
let userSelection = user.list.first(where: {$0.id == item.id})
item.approved = userSelection.approved
print(userSelection)
}
如果你不关心性能,你可以使用set.intersection
:
let set1:Set<UserType> = Set(userList)
let set2:Set<UserType> = Set(user.list)
let commonItems = set1.intersection(set2)// Intersection of two sets
尝试是这样的
let userSelection = user.list.filter({userList.map({$0.id}).contains({$0.id})})
说明:
//get all the ids from one list
let ids = userList.map({$0.id})
//filter the second list by including all the users whose id is in the first list
let userSelection = user.list.filter({ids.contains({$0.id})})
感谢您的回复,但我收到此问题: 无法调用非功能类型'用户'的值 – CAN
我将其分成2部分并描述了大概的概念。也许你将不得不在你的课堂上做出调整,这个想法很重要。 –
即使如果y我们的模型不是Hashable,你可以使用集合来执行验证:
if Set(userList.map{$0.id}).subtracting(user.list.map{$0.id}).count == 0
{
// all entries in userList exist in user.list
}
else
{
// at least one entry of userList is not in user.list
}
您是否试图找到'userList'中包含在'user.list'中的所有项目? –
@IgorKulman是的,我试图达到。 – CAN
@CAN您发布的代码只会获得第一次发布。请更新您的问题并澄清 –