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

JavaScript中使用keys等方法生成0到N自定义步长递增数组的实现问题

问题根因

map 方法会遍历数组的全部元素,对每个索引执行相同的计算逻辑,无法实现按步长跳过索引的效果,你之前给每个索引统一加step的写法,自然会得到连续递增的不符合预期的结果。


符合限制条件的实现方案

两种方案均满足要求:使用Array构造函数和keys()方法、单行实现、无for循环。

场景1:需要得到你预期的0,5,10,15,20结果(最大值等于arrLength)

const newArr = [...Array(Math.floor(arrLength / step) + 1).keys()].map(i => i * step);

逻辑:先按目标元素个数(总长度除以步长加1)构造数组,通过keys()拿到0到N-1的索引,再通过map将每个索引乘以步长,直接得到符合要求的等差序列。

场景2:严格基于长度为arrLength的原数组,仅保留索引为step倍数的元素

const newArr = [...Array(arrLength).keys()].filter(i => i % step === 0);

逻辑:先拿到原数组的所有索引,通过filter筛选出能被step整除的索引即可。如果你的arrLength是20,这个方案输出结果为0,5,10,15,如果需要包含20,把arrLength调整为21即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:06:05