【发布时间】:2020-05-15 02:01:58
【问题描述】:
我有两个用户数组和光束
struct User {
var id: Int
var jobTitle: String
}
struct Beams {
var isSelected = false
var id: Int
var userIds: [Int]
}
如果用户选择了特定的波束,则分配给该波束的所有用户都将从第一个阵列中选择。用户可以选择多个光束,我从 api 响应中获取数据,我必须在电话后发送选定的用户。所以我必须从一组光束中选择所有选定的用户,并根据过滤后的 id,在电话后发送该数组。最初我正在过滤所有像这样选择的光束
beams.filter { $0.isSelected }.compactMap { $0.userIDS }
这给了我一个 [Int] 数组。这些是必须发送的用户 ID。我不知道如何从包含其他属性的用户数组中选择这些特定的 id。 contains 可用于过滤一个元素,但不能过滤序列。即使我过滤或取这些 id 和我的 userArray 的交集。我仍然留下一组或一组 id。我必须从中生成我的数组,我也想保留所有其他属性。任何正确方向的帮助将不胜感激。我脑子里有这种性质的东西
let selectedBeamsIds = beams.filter { $0.isSelected }.compactMap { $0.userIDS }
users.append(selectedBeamsIds.compactMap { getUniqueUsersForBeams(ids: $0) } )
private func getUniqueUsersForBeams(ids: [Int]) -> [User] {
let ower = users.reduce(into: [User]()) { (result,
user) in
let filteredUserIds = ids.filter { $0 == user.id }
//result.append(use)
}
}
我还需要使用另一个 jobTitles 数组来执行此操作,就像
struct JobTitle {
var jobTitle: String
var isSelected = false
}
这很简单,就好像用户的 jobTitle 与 [String] 数组的选定项匹配,然后选择要发送的用户。
【问题讨论】:
标签: arrays swift collections set sequence