> Можно ли объединить массивы через reduce (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Яндекс

Стек: iOS, Swift

> Пример ответа

Да, конечно. reduce - это универсальный метод для свёртки коллекции в одно значение. Чтобы объединить массивы, нужно в качестве начального значения передать пустой массив, а в замыкании добавлять элементы текущего массива к аккумулятору.

Пример для объединения массива массивов:

SWIFT
let arrays = [[1, 2], [3, 4], [5, 6]]
let flattened = arrays.reduce([], { $0 + $1 })
// flattened = [1, 2, 3, 4, 5, 6]

Или более лаконично:

SWIFT
let flattened = arrays.reduce([], +)

Однако для этой задачи лучше использовать flatMap (или compactMap в Swift 4.1+), так как он читаемее и оптимизированнее:

SWIFT
let flattened = arrays.flatMap { $0 }

reduce же даёт больше гибкости, если нужно, например, объединять с условием или трансформировать элементы.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью