条件が満たされるまで生成する

JavaScriptJavaScriptBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、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 と入力します。その後、与えられた条件が満たされるまで新しい値を生成するジェネレータを作成できます。

このジェネレータを作成するには、次の手順に従います。

  • seed 値を使用して現在の val を初期化します。
  • condition 関数に現在の val を渡して呼び出したときに false を返す間、while ループを使用して反復処理を続けます。
  • yield キーワードを使用して現在の val を返し、任意で新しいシード値 nextSeed を受け取ります。
  • next 関数を使用して、現在の valnextSeed から次の値を計算します。

以下はコードの例です。

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]

これは、val6 に等しくなったときに条件 v > 5 が満たされるため、1 から 5 までの値の配列を生成します。

まとめ

おめでとうございます!「条件が満たされるまで生成する」実験を完了しました。LabEx でさらに多くの実験を行って、スキルを向上させることができます。