Files
30-seconds-of-code/snippets/generateWhile.md
2022-05-03 18:34:25 +03:00

924 B

title, tags, expertise, author, cover, firstSeen
title tags expertise author cover firstSeen
Generate while condition is met function,generator advanced chalarangelo blog_images/lake-loop.jpg 2022-01-21T05:00:00-04:00

Creates a generator, that keeps producing new values as long as the given condition is met.

  • Initialize the current val using the seed value.
  • Use a while loop to iterate while the condition function called with the current val returns true.
  • Use yield to return the current val and optionally receive a new seed value, nextSeed.
  • Use the next function to calculate the next value from the current val and the 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;
};
[...generateWhile(1, v => v <= 5, v => ++v)]; // [1, 2, 3, 4, 5]