Верните генератор, который лениво получает значения исходного синхронного итератора и преобразует каждое перед yield.
Реализуйте map-функцию для итератора, которая преобразует его значения, например умножает каждое случайное число на 2.
Верните генератор, который лениво получает значения исходного синхронного итератора и преобразует каждое перед yield.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Верните генератор, который лениво получает значения исходного синхронного итератора и преобразует каждое перед yield.
Обёртка делает iterable даже из объекта, имеющего только next; память O(1), бесконечный источник не вычисляется заранее.
function* mapIterator(iterator, transform) {
const iterable = { [Symbol.iterator]: () => iterator };
for (const value of iterable) yield transform(value);
}
// [...mapIterator([1, 2, 3].values(), n => n * 2)]
// [2, 4, 6]
При досрочном закрытии генератора for...of вызывает return исходного итератора, если он есть. Для async iterator потребуется отдельный вариант с for await.