You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript闭包函数调用实现同一值连续返回n次?

原代码问题说明

你的实现存在两个核心错误,无法达到预期效果:

  • 缺少「单值重复返回次数」的计数逻辑,每次调用内部函数都会直接移动数组索引,不可能实现同一个值连续返回n次的效果
  • 传入num参数时的for循环没有实际作用:第一次循环执行到return increment就直接终止函数返回结果了,和直接返回increment没有任何区别
实现方案

闭包需要同时维护两个状态变量才能满足需求:一个记录当前读取的数组索引,一个记录当前值已经返回的次数。当返回次数达到指定的n次时,再移动数组索引、重置返回计数;数组遍历到末尾时自动循环回到第一个元素即可。

完整实现代码:

function getCurrentValue(values, repeatNum = 1) {
  let currentIndex = 0;
  let count = 0;
  const len = values.length;

  return function () {
    const res = values[currentIndex];
    count++;
    // 当前值返回次数达标,切换到下一个值
    if (count >= repeatNum) {
      currentIndex = (currentIndex + 1) % len;
      count = 0;
    }
    return res;
  };
}
效果验证

使用你提供的示例调用测试,返回结果完全符合预期:

let value = getCurrentValue([0, 315, 270, 225, 180, 135, 90], 3);
value() // 返回 0
value() // 返回 0
value() // 返回 0
value() // 返回 315
value() // 返回 315
value() // 返回 315
value() // 返回 270
value() // 返回 270
value() // 返回 270

内容的提问来源于stack exchange,提问作者Antonio Pavicevac-Ortiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 04:15:55