> Можно ли объединить массивы через reduce (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Яндекс
Стек: iOS, Swift
> Пример ответа
Да, конечно. reduce - это универсальный метод для свёртки коллекции в одно значение. Чтобы объединить массивы, нужно в качестве начального значения передать пустой массив, а в замыкании добавлять элементы текущего массива к аккумулятору.
Пример для объединения массива массивов:
SWIFTlet arrays = [[1, 2], [3, 4], [5, 6]]let flattened = arrays.reduce([], { $0 + $1 })// flattened = [1, 2, 3, 4, 5, 6]
Или более лаконично:
SWIFTlet flattened = arrays.reduce([], +)
Однако для этой задачи лучше использовать flatMap (или compactMap в Swift 4.1+), так как он читаемее и оптимизированнее:
SWIFTlet flattened = arrays.flatMap { $0 }
reduce же даёт больше гибкости, если нужно, например, объединять с условием или трансформировать элементы.
> Похожие задачи по mobile
Как реализовать unit test для функции getValue
Почему при взятии подмассива массива возвращается ArraySlice, а при взятии подстроки из String возвращается Substring
Что означает ошибка компиляции при отсутствии атрибута escaping?
Есть ли опыт работы с GraphQL
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью