У меня есть два массива пользователей и лучей
struct User {
var id: Int
var jobTitle: String
}
struct Beams {
var isSelected = false
var id: Int
var userIds: [Int]
}
Если пользователь выбирает конкретный луч, все пользователи, которые назначены этому лучу, будут выбраны из первого массива. Пользователь может выбрать несколько лучей, и я получаю данные из ответа API, и я должен отправить выбранных пользователей в виде пост-звонка. поэтому я должен выбрать всех выбранных пользователей из массива балок и на основе отфильтрованных идентификаторов отправить этот массив в виде пост-звонка. Первоначально я фильтрую все лучи, которые выбраны, как это
beams.filter { $0.isSelected }.compactMap { $0.userIDS }
, что дает мне массив [Int]. Это userIds, которые должны быть отправлены. Я почему-то не могу понять, как я выберу эти конкретные идентификаторы из моего массива пользователей, который также содержит другие атрибуты. Содержимое может использоваться для фильтрации одного элемента, но не последовательности. и даже если я фильтрую или принимаю пересечение этих идентификаторов и моего userArray. я все еще остался с набором или массивом идентификаторов. из которого мне нужно будет сгенерировать мой массив, я хочу сохранить и все остальные атрибуты. Любая помощь в правильном направлении будет принята с благодарностью. У меня в голове есть нечто подобное
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], затем выберите пользователя для отправки.