Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 85 из 114 · 9 мин
Iterator.from и ленивые методы map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find у итераторов.
Сделай [...tickets()].filter(...) — и браузер зависнет навсегда! Хе-хе.
У итераторов свои ленивые методы: они берут значения по одному и останавливаются, когда хватит.
Iterator · Iterator.from()Iterator — общий прототип итераторов со встроенными методами. Iterator.from(x) делает такой итератор из любого перебираемого.const it = Iterator.from(["Блокнот", "Пенал"]);
console.log(it.next().value, it.toArray());map() · filter()function* nums() { let n = 1; while (true) yield n++; }
console.log(nums().filter((n) => n % 2 === 0).map((n) => n * 10).take(3).toArray());take() · drop()take(n) — первые n значений, drop(n) — пропустить первые n.function* nums() { let n = 1; while (true) yield n++; }
console.log(nums().drop(10).take(3).toArray());flatMap()flatMap у массивов, но лениво.console.log(Iterator.from(["a b", "c"]).flatMap((s) => s.split(" ")).toArray());reduce() · toArray() · forEach()reduce сворачивает, toArray собирает в массив, forEach вызывает функцию для каждого.const it = () => Iterator.from([220, 150, 290]);
console.log(it().reduce((a, b) => a + b, 0), it().toArray().length);
it().forEach((p) => console.log(p));some() · every() · find()function* nums() { let n = 1; while (true) yield n++; }
console.log(nums().find((n) => n * n > 50), nums().some((n) => n > 100));Перед ... у бесконечного генератора остановись: сначала take(n), потом toArray().
Генератор tickets() бесконечный. Получи firstEven — первые 5 чётных номеров через filter, take и toArray.
take — пока нетВыберите один ответ.
Почему gen().map(f).take(3).toArray() работает для бесконечного генератора?
Выберите один ответ.
Зачем Iterator.from(x)?
Проверяем состояние обучения…