У меня есть один массив «users» со всеми пользовательскими данными и второй массив «userIds», имеющий идентификатор пользователя. Я должен выбрать пользователя из массива "users", используя массив "userIds"
struct User {
let name: String
let id: Int
}
let users: [User] = [User(name: "a", id: 1),
User(name: "b", id: 2),
User(name: "c", id: 3),
User(name: "d", id: 4),
User(name: "d", id: 5)]
let userIds = [2,3,2,5]
массив результатов, который мне нужен:
[User(name: "b", id: 2),
User(name: "c", id: 3),
User(name: "b", id: 2),
User(name: "d", id: 5)]
, чтобы он мог иметь дублирующиеся данные в соответствии с данными в "userIds".
Теперь я попытался использовать функцию высшего порядка filter
:
let result = users.filter { (user) -> Bool in
return userIds.contains(user.id)
}
, но это удаляет дубликаты данных и вывод:
[User(name: "b", id: 2),
User(name: "c", id: 3),
User(name: "d", id: 5)]
Один из подходов, который я попробовал, использует l oop:
var result = [User]()
for i in userIds {
result.append(users.filter({ $0.id == i }).first!)
}
, который дает желаемый результат, но если есть лучший подход, пожалуйста, предложите.