Генерация при выполнении условия

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

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

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

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") subgraph Lab Skills javascript/variables -.-> lab-28347{{"Генерация при выполнении условия"}} javascript/data_types -.-> lab-28347{{"Генерация при выполнении условия"}} javascript/arith_ops -.-> lab-28347{{"Генерация при выполнении условия"}} javascript/loops -.-> lab-28347{{"Генерация при выполнении условия"}} end

Генератор, который генерирует значения, пока условие истинно

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

Генератор инициализируется начальным значением seed, которое используется для инициализации текущего значения val. Затем используется цикл while, чтобы выполнять итерации, пока функция condition, вызываемая с текущим значением val, возвращает true.

Ключевое слово yield используется для возврата текущего значения val и необязательного приема нового начального значения nextSeed. Функция next используется для вычисления следующего значения из текущего значения val и значения nextSeed.

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

Для использования генератора вызовите его с функциями seed, condition и next. Например, вызов [...generateWhile(1, v => v <= 5, v => ++v)] вернет [1, 2, 3, 4, 5].

Резюме

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