В ответе Ракешы Шастри нет ничего плохого.По соображениям производительности вы можете захотеть сделать selectedIDs
a Set
вместо Array
:
let allEntries = [Entry(id: "1"), Entry(id:"2"), Entry(id:"3"), Entry(id:"4")]
let selectedIDs: Set<String> = ["1", "3"]
let selectedEntries = allEntries.filter({ selectedIDs.contains($0.id) })
Причина в том, что поиск Array
имеет вычислительную сложность O(n)
, гдеn
- длина массива, в то время как поиск Set
(т. Е. Хеш-таблицы) в среднем равен O(1)
.
Если вы продолжитеselectedIDs
как массив, общее решение имеет сложность O(n * m)
, где n
и m
являются длинами selectedIDs
и allEntries
соответственно.
Если вы используете Set
, общая сложность уменьшается до O(m)
.
Сказав это, ваш пример слишком тривиален для того, чтобы оба метода могли что-то изменить.