求助:使用JavaScript生成指定规则的分段数组
问题分析
给定起始值start、终止值end、步长参数size,需要生成两种不同规则的二维数组:
- 规则1:
start=1、end=100、size=10时,输出[[10,20],[20,30],...,[90,100]] - 规则2:相同参数下,输出
[[5,10],[10,15],...,[95,100]]
你提供的代码从start开始步进size,生成[i, i+size-1]的子数组,得到的是[[1,10],[11,20],...],不符合任一规则,以下是两种规则的正确实现:
规则1实现代码
const start = 1; const end = 100; const size = 10; const result = []; let current = size; // 第一个子数组的起始为size的倍数 while (current <= end - size) { result.push([current, current + size]); current += size; } // 补充最后一个子数组 result.push([current, end]); console.log(JSON.stringify(result));
逻辑说明
- 初始值设为
size(即10),保证第一个子数组起始是size的倍数 - 每次步进
size,生成[current, current+size]格式的子数组,直到current加size后会超过end - 最后补充以
end为结束的子数组,确保序列完整覆盖到终止值
规则2实现代码
const start = 1; const end = 100; const size = 10; const halfSize = size / 2; // 步进为size的一半 const result = []; let current = halfSize; // 第一个子数组起始为size的一半 while (current + halfSize <= end) { result.push([current, current + halfSize]); current += halfSize; } console.log(JSON.stringify(result));
逻辑说明
- 步进值取
size/2(即5),初始值设为该步进值 - 每次生成
[current, current+halfSize]的子数组,直到子数组的结束值不超过end - 最终得到以
size/2为间隔、前后子数组首尾衔接的序列
内容的提问来源于stack exchange,提问作者Code Guy
相关产品推荐
相关产品推荐

