> Как реализовать фильтрацию массива с сохранением уникальных элементов и порядка (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: 2GIS
Стек: iOS, Swift
> Пример ответа
Для фильтрации массива с сохранением уникальных элементов и их исходного порядка в Swift можно использовать NSOrderedSet или написать собственное расширение. Вот два подхода:
1. Использование NSOrderedSet (простой, но с приведением типов):
SWIFTlet array = [3, 1, 2, 3, 1, 4]let uniqueArray = Array(NSOrderedSet(array: array)) as! [Int]// [3, 1, 2, 4]
2. Кастомное расширение с сохранением порядка (более гибкое):
SWIFTextension Array where Element: Hashable {func unique() -> [Element] {var seen = Set<Element>()return filter { element inif seen.contains(element) {return false} else {seen.insert(element)return true}}}}// Использование:let array = [3, 1, 2, 3, 1, 4]let uniqueArray = array.unique() // [3, 1, 2, 4]
Второй подход предпочтительнее для iOS-разработки, так как он:
- Работает с любыми
Hashableтипами (Int, String, пользовательские структуры) - Не требует приведения типов
- Легко тестируется и переиспользуется
- Эффективен по времени (O(n) за счёт Set)
> Похожие задачи по mobile
Какой следующий этап после технического интервью
Как реализовать функцию setValue для обновления значения по ключу
Как разделить функции для чтения и записи значений
Как реализовать проверку на переполнение при конвертации строки в число
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью