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

如何生成以指定值为初始值按固定步长累加的序列数组

原代码问题说明
  • 遍历的数组为固定长度的[0, 1, 2, 3, 4],无法输出你需要的10个元素的目标数组
  • reduce逻辑错误:初始值设置为10000,每次迭代返回固定值1,完全没有按照步长1000累加生成元素的逻辑
  • 函数没有返回生成的数组,外部调用拿不到结果
  • 传入的参数i、o完全没有被使用,逻辑硬编码不可复用
正确实现方案

方案1:更简洁的Array.from实现(推荐)

const range = (step: number, max: number): number[] => {
  const elementCount = Math.floor(max / step);
  return Array.from({ length: elementCount }, (_, index) => (index + 1) * step);
};

// 调用示例
const result = range(1000, 10000);
console.log(result); // 输出 [1000, 2000, 3000, ..., 10000]

方案2:基于reduce的实现

如果你希望用reduce逻辑实现,可以参考如下写法:

const range = (step: number, max: number): number[] => {
  const elementCount = Math.floor(max / step);
  return new Array(elementCount).fill(0).reduce((accumulator, _, index) => {
    accumulator.push((index + 1) * step);
    return accumulator;
  }, [] as number[]);
};

// 调用示例
const result = range(1000, 10000);
扩展说明

如果后续需求中最大值max不是步长step的整数倍,可以自行调整elementCount的计算逻辑,比如需要保留小于max的最大符合规则的元素,就保持现有计算逻辑即可;如果需要向上取整到超过max的第一个符合规则的元素,可以把Math.floor改成Math.ceil。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:01