我有兩個數組,它們有相同的模型。通過比較兩個數組來找到對象
我試圖找到它具有相同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您發佈的代碼只會獲得第一次發佈。請更新您的問題並澄清 –