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

如何用单循环+纯数学运算符,仅靠索引i生成重复N次的目标序列?

实现预期数组输出的单循环数学计算方案

问题背景

你希望通过单循环、仅使用数学运算符,完全依靠循环索引i计算值,得到如下预期输出的数组:

// 预期输出
[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]

原始尝试的代码如下:

const array = [];

const times = 3;
const count = 5;

for (let i = 0; i < times * count * 2; i++) {
  const a = i - (i % times);
  const b = a % count;
  array.push(b);
}

console.log(array);

优化实现方案

可以通过更简洁的数学计算直接得到目标值,完全满足你的要求:

const array = [];
const times = 3;
const count = 5;

for (let i = 0; i < times * count * 2; i++) {
  const value = Math.floor(i / times) % count;
  array.push(value);
}

console.log(array);

逻辑解释

  • Math.floor(i / times):将每times个连续的循环索引i归为同一组,得到一个递增的整数(比如i=0、1、2时结果为0;i=3、4、5时结果为1,以此类推),这一步等价于原始代码中i - (i % times)的核心作用,但直接取商更高效简洁。
  • % count:让上述分组后的整数在0到count-1的范围内循环,实现"每times个重复同一数值,遍历完0到count-1后再从头循环"的效果。

这个实现完全符合你的限制条件:单循环、仅使用数学运算符、所有计算仅依赖循环索引i。

内容的提问来源于stack exchange,提问作者Yusuf Bayrak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:40:27