Генерация до достижения условия

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы изучим концепцию генераторов в JavaScript. В частности, мы узнаем, как создать генераторную функцию, которая генерирует новые значения, пока не будет достигнуто определенное условие. С помощью практических заданий по программированию мы лучше понеможем, как работают генераторы и как их можно использовать для упрощения кода и повышения его производительности.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28346{{"Генерация до достижения условия"}} javascript/data_types -.-> lab-28346{{"Генерация до достижения условия"}} javascript/arith_ops -.-> lab-28346{{"Генерация до достижения условия"}} javascript/comp_ops -.-> lab-28346{{"Генерация до достижения условия"}} javascript/loops -.-> lab-28346{{"Генерация до достижения условия"}} javascript/spread_rest -.-> lab-28346{{"Генерация до достижения условия"}} end

Генерация значений до достижения заданного условия

Для начала практики программирования откройте Терминал/SSH и введите node. После этого вы можете создать генератор, который будет генерировать новые значения, пока не будет достигнуто заданное условие.

Чтобы создать этот генератор, следуйте шагам:

  • Инициализируйте текущее val с использованием значения seed.
  • Используйте цикл while, чтобы продолжать итерации, пока функция condition, вызываемая с текущим val, возвращает false.
  • Используйте ключевое слово yield, чтобы вернуть текущее val и, по желанию, получить новое значение seed, nextSeed.
  • Используйте функцию next, чтобы вычислить следующее значение из текущего val и nextSeed.

Вот пример кода:

const generateUntil = function* (seed, condition, next) {
  let val = seed;
  let nextSeed = null;
  while (!condition(val)) {
    nextSeed = yield val;
    val = next(val, nextSeed);
  }
  return val;
};

Вы можете использовать генератор, вызвав его с соответствующими аргументами. Например:

[
  ...generateUntil(
    1,
    (v) => v > 5,
    (v) => ++v
  )
]; // [1, 2, 3, 4, 5]

Это создаст массив значений от 1 до 5, так как условие v > 5 выполняется, когда val равно 6.

Резюме

Поздравляем! Вы завершили практическое занятие "Генерация до достижения условия". Вы можете выполнить больше практических заданий в LabEx, чтобы улучшить свои навыки.