Skip to content

Latest commit

 

History

History
42 lines (33 loc) · 1.12 KB

generateUntil.md

File metadata and controls

42 lines (33 loc) · 1.12 KB
标题 标签
generateItems(生成满足条件新值的生成器) function,generator(函数,生成器)

创建一个生成器,在满足给定条件之前不断生成新值。

  • 使用种子值初始化当前 val。
  • 当使用当前 val 调用的条件函数返回 false 时,使用 while 循环进行迭代。
  • 使用 yield 返回当前 val 并可选择接收新的种子值 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]

应用场景

结果如下:

<iframe src="codes/javascript/html/generateUntil.html"></iframe>